kerasノート-モデル保存およびtensorboardの使用
5108 ワード
1つのepochのモデル保存およびtensorboardの使用はkerasのコールバック関数Callbacksを使用することができる.
まずコードを見てみましょう.
コールバック関数は、トレーニングのフェーズで使用される関数の集合です.コールバック関数を使用して、トレーニングモデルの内在的な状態と統計を表示できます.
各トレーニング期間の後にモデルを保存します.
たとえば、
パラメータ filepath:文字列、モデルのパスを保存します. monitor:モニタリングされたデータ. verbose:詳細モード、0または1. save_best_only: mode:{auto,min,max}のいずれか. save_weights_only:Trueの場合、モデルの重みだけが保存されます( period:各チェックポイント間の間隔(トレーニングホイール数).
Tensorboardは基本的に可視化されています.
TensorBoardはTensorflowによって提供される可視化ツールです.
このコールバック関数はTensorboardのためにログを作成し、テストと訓練の標準評価の動的画像を可視化したり、モデル内の異なる層の活性化値ヒストグラムを可視化したりすることができます.
pipを使用してTensorflowをインストールした場合は、コマンドラインからTensorflowを起動できます.
パラメータ log_dir:TensorBoardによって分析されたログファイルを保存するファイル名. histogram_freq:モデル内の各レイヤについて、アクティブ値とモデルウェイトヒストグラムの周波数(トレーニングホイール数)を計算します.0に設定すると、ヒストグラムは計算されません.ヒストグラム可視化の検証データ(または分離データ)については明確に指摘しなければならない. write_graph:TensorBoardで画像を可視化するかどうか.もしwrite_graphはTrueに設定され、ログファイルは非常に大きくなります. write_grads:TensorBoardで勾配値ヒストグラムを可視化するかどうか. batch_size:ヒストグラムで計算された転送ニューロンネットワーク入力バッチのサイズ. write_images:TensorBoardでモデルウェイトを画像で可視化するかどうか. embeddings_freq:選択された埋め込み層が保存される頻度(トレーニングホイール). embeddings_layer_names:モニタリングされるレイヤの名前のリストです.Noneまたは空のリストの場合、すべての埋め込みレイヤが監視されます. embeddings_metadata:この埋め込み層メタデータファイルが保存されている名前まで対応するレイヤの名前を辞書に表示します.メタデータのデータフォーマットの詳細を表示します.同じメタデータが使用される埋め込みレイヤに使用されないように、文字列が入力されます.
まずコードを見てみましょう.
from keras import backend as K
from keras.models import Sequential
from keras.layers.core import Activation, Dropout
from keras.layers.core import Dense
from keras.optimizers import SGD
from keras.callbacks import ModelCheckpoint, TensorBoard
from keras.datasets import mnist
from keras.utils import np_utils
import numpy as np
import os
np.random.seed(1671)
#
NB_EPOCH = 20
BATCH_SIZE = 128
VERBOSE = 1
NB_CLASSES = 10
OPTIMIZER = SGD()
N_HIDDEN = 128
VALIDATION_SPLIT = 0.2
DROPOUT = 0.3
MODEL_path = './model/'
if not os.path.exists(MODEL_path):
os.mkdir(MODEL_path)
#
(X_train, Y_train), (X_test, Y_test) = mnist.load_data()
RESHAPED = 784
#
X_train = X_train.reshape(60000, RESHAPED)
X_test = X_test.reshape(10000, RESHAPED)
X_train = X_train.astype('float32')
X_test = X_test.astype('float32')
#
X_train /= 255
X_test /= 255
print(X_train.shape[0], 'train samples')
print(X_test.shape[0], 'test samples')
Y_train = np_utils.to_categorical(Y_train, NB_CLASSES)
Y_test = np_utils.to_categorical(Y_test, NB_CLASSES)
model = Sequential()
model.add(Dense(N_HIDDEN, input_shape=(RESHAPED,)))
model.add(Activation('relu'))
model.add(Dropout(DROPOUT))
model.add(Dense(N_HIDDEN))
model.add(Activation('relu'))
model.add(Dense(NB_CLASSES))
model.add(Activation('softmax'))
model.summary()
model.compile(loss='categorical_crossentropy', optimizer=OPTIMIZER, metrics=['accuracy'])
checkpoit = ModelCheckpoint(filepath=os.path.join(MODEL_path, 'model-{epoch:02d}.h5'))
tensorboard = TensorBoard(log_dir='./logs', histogram_freq=0, write_graph=True, write_images=True)
history = model.fit(X_train, Y_train,
batch_size=BATCH_SIZE, epochs=NB_EPOCH,
verbose=VERBOSE, validation_split=VALIDATION_SPLIT, callbacks=[checkpoit, tensorboard])
#
model.save('mnist.h5')
score = model.evaluate(X_test, Y_test, verbose=VERBOSE)
print('test score:', score[0])
print('test accuracy:', score[1])
コールバック関数の使用
コールバック関数は、トレーニングのフェーズで使用される関数の集合です.コールバック関数を使用して、トレーニングモデルの内在的な状態と統計を表示できます.
callbacks
のキーワードパラメータとして、Sequential
またはModel
のタイプの.fit()
メソッドにリストのコールバック関数を渡すことができます.訓練時には,対応するコールバック関数のメソッドがそれぞれのフェーズで呼び出される.ModelCheckpoint
keras.callbacks.ModelCheckpoint(filepath, monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)
各トレーニング期間の後にモデルを保存します.
filepath
は、epoch
の値およびlogs
のキー(on_epoch_end
パラメータによって伝達される)によって埋め込まれ得る命名フォーマットオプションを含むことができる.たとえば、
filepath
がweights.{epoch:02d}-{val_loss:.2f}.hdf5
である場合、モデルが保存されているファイル名には、トレーニングホイール数と検証損失があります.パラメータ
save_best_only=True
であれば、モニタリングされたデータの最適なモデルは上書きされません.save_best_only=True
の場合、保存ファイルを上書きするかどうかの決定は、監視データの最大値または最小値に依存する.val_acc
の場合、パターンはmax
であり、val_loss
の場合、パターンはmin
などである必要がある.auto
モードでは、モニタされたデータの名前から方向が自動的に判断されます.model.save_weights(filepath)
)、そうでない場合、モデル全体が保存されます(model.save(filepath)
).TensorBoard
keras.callbacks.TensorBoard(log_dir='./logs', histogram_freq=0, batch_size=32, write_graph=True, write_grads=False, write_images=False, embeddings_freq=0, embeddings_layer_names=None, embeddings_metadata=None)
Tensorboardは基本的に可視化されています.
TensorBoardはTensorflowによって提供される可視化ツールです.
このコールバック関数はTensorboardのためにログを作成し、テストと訓練の標準評価の動的画像を可視化したり、モデル内の異なる層の活性化値ヒストグラムを可視化したりすることができます.
pipを使用してTensorflowをインストールした場合は、コマンドラインからTensorflowを起動できます.
tensorboard --logdir=/full_path_to_your_logs
パラメータ
histogram_freq
は0より大きくなければなりません.