TensorflowとKerasを使ってmnistの訓練と評価をしてみる
Tensorflow・Kerasとは(ザックリ)
インストール方法
とりあえずpipで入れてみる。
$ pip install -U tensorflow $ pip install -U keras
Tensorflow・Kerasを使ってmnistの訓練を行う
from keras.datasets import mnist from keras.models import Sequential from keras.layers.core import Dense, Dropout, Activation from keras.optimizers import Adam from keras.utils import np_utils # mnistデータの読み込み (X_train, y_train), (X_test, y_test) = mnist.load_data() # データをfloat型にして正規化する # データ数×縦ピクセル数×横ピクセル数のデータをデータ数×784の方にする X_train = X_train.reshape(60000, 784).astype('float32') / 255 X_test = X_test.reshape(10000, 784).astype('float') / 255 # ラベルをone_hot形式に変換 y_train = np_utils.to_categorical(y_train, 10) y_test = np_utils.to_categorical(y_test, 10) # モデルの構造を定義 model = Sequential() # 1層目 model.add(Dense(512, input_shape=(784,))) model.add(Activation('relu')) # 2層目 model.add(Dense(512)) model.add(Activation('relu')) # 出力 model.add(Dense(10)) model.add(Dropout(0.2)) model.add(Activation('softmax')) # モデルの構築 model.compile( loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy']) # データで訓練 hist = model.fit(X_train, y_train) # テストデータで評価する loss, accuracy = model.evaluate(X_test, y_test, verbose=1) print('loss=', loss) print('accuracy=', accuracy)
特に注目したいのがmodelを用いて直感的に学習の手順を記述することができる。
コードでは3層のニューラルネットワークを構築している。
Denseは全結合を行うモジュールで、1層目のみ入力データのサイズを指定する必要がある。
モデルを定義し、コンパイルし、訓練をし、テストデータで精度を評価するという流れ。