Memo

メモ > 技術 > プログラミング言語: Python > TensorFlow+Keras(ディープラーニング)

■TensorFlow+Keras(ディープラーニング)
KerasはTensorFlowを簡単に使えるようにするためのライブラリだったが、使いやすかったのでTensorFlowに取り込まれた ■Kerasでアヤメの分類 モデル定義部分にある「Dense」というのは、全結合ニューラルネットワーク つまり「keras.layers.Dense」だけで1つのニューラルネットワークを表している 次の「keras.models.Sequential()」は、シーケンシャル(順番)にニューラルネットワークを追加するモデルを定義している 「Dense(10)」では、ユニット数が10個あるネットワークを作成している またこのモデルで最終的な出力は3次元なので、「Dense(3)」によって出力ユニット数を3次元にしている iris.csv は「Pandas(データ解析支援)でアヤメの分類」で使用したものと同じ
import tensorflow as tf #import tensorflow.contrib.keras as keras import tensorflow.keras as keras from sklearn.model_selection import train_test_split import pandas as pd import numpy as np # アヤメデータの読み込み iris_data = pd.read_csv("iris.csv", encoding="utf-8") # アヤメデータをラベルと入力データに分離する y_labels = iris_data.loc[:,"Name"] x_data = iris_data.loc[:,["SepalLength","SepalWidth","PetalLength","PetalWidth"]] # ラベルデータをone-hotベクトルに直す labels = { 'Iris-setosa': [1, 0, 0], 'Iris-versicolor': [0, 1, 0], 'Iris-virginica': [0, 0, 1] } y_nums = np.array(list(map(lambda v : labels[v] , y_labels))) x_data = np.array(x_data) # 学習用とテスト用に分割する x_train, x_test, y_train, y_test = train_test_split( x_data, y_nums, train_size=0.8) # モデル構造を定義 Dense = keras.layers.Dense model = keras.models.Sequential() model.add(Dense(10, activation='relu', input_shape=(4,))) model.add(Dense(3, activation='softmax')) # モデルを構築 model.compile( loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy']) # 学習を実行 model.fit(x_train, y_train, batch_size=20, epochs=300) # モデルを評価 score = model.evaluate(x_test, y_test, verbose=1) print('正解率=', score[1], 'loss=', score[0])
実行するとエラーになるようになっていたが、
$ python3 keras-iris.py 2021-02-06 15:24:33.126208: E tensorflow/core/platform/hadoop/hadoop_file_system.cc:132] HadoopFileSystem load error: libhdfs.so: cannot open shared object file: No such file or directory Traceback (most recent call last): File "keras-iris.py", line 2, in <module> import tensorflow.contrib.keras as keras ModuleNotFoundError: No module named 'tensorflow.contrib'
kerasの読み込み部分を以下のようにすれば実行できた バージョンアップによって読み込み方法が変わったのかもしれない
#import tensorflow.contrib.keras as keras import tensorflow.keras as keras
以下で実行できた
$ python3.7 keras-iris.py 2021-02-20 12:48:40.802940: E tensorflow/core/platform/hadoop/hadoop_file_system.cc:132] HadoopFileSystem load error: libhdfs.so: cannot open shared object file: No such file or directory WARNING:tensorflow:From /usr/local/lib/python3.7/dist-packages/tensorflow_core/python/ops/resource_variable_ops.py:1630: calling BaseResourceVariable.__init__ (from tensorflow.python.ops.resource_variable_ops) with constraint is deprecated and will be removed in a future version. Instructions for updating: If using Keras pass *_constraint arguments to layers. Train on 120 samples Epoch 1/300 120/120 [==============================] - 0s 1ms/sample - loss: 2.6795 - acc: 0.3583 Epoch 2/300 120/120 [==============================] - 0s 131us/sample - loss: 2.4687 - acc: 0.3583 Epoch 3/300 120/120 [==============================] - 0s 132us/sample - loss: 2.2803 - acc: 0.3583 〜中略〜 Epoch 298/300 120/120 [==============================] - 0s 143us/sample - loss: 0.1543 - acc: 0.9833 Epoch 299/300 120/120 [==============================] - 0s 142us/sample - loss: 0.1536 - acc: 0.9833 Epoch 300/300 120/120 [==============================] - 0s 143us/sample - loss: 0.1531 - acc: 0.9833 30/30 [==============================] - 0s 2ms/sample - loss: 0.1132 - acc: 0.9667 正解率= 0.96666664 loss= 0.11321666091680527
■学習メモ book-mlearn-gyomu/tf-iris.py at master - kujirahand/book-mlearn-gyomu - GitHub https://github.com/kujirahand/book-mlearn-gyomu/blob/master/src/ch5/iris/tf-iris.py book-mlearn-gyomu/keras-iris.py at master - kujirahand/book-mlearn-gyomu - GitHub https://github.com/kujirahand/book-mlearn-gyomu/blob/master/src/ch5/iris/keras-iris.py 【Pythonステップアップ!】高階関数mapの便利な使い方 | 侍エンジニア塾ブログ(Samurai Blog) - プログラミング入門者向けサイト https://www.sejuku.net/blog/24759 Pythonのlambdaって分かりやすい - Qiita https://qiita.com/nagataaaas/items/531b1fc5ce42a791c7df

Advertisement