web-dev-qa-db-ja.com

Keras + TensorFlowリアルタイムトレーニングチャート

Jupyterノートブック内で次のコードを実行しています。

# Visualize training history
from keras.models import Sequential
from keras.layers import Dense
import matplotlib.pyplot as plt
import numpy
# fix random seed for reproducibility
seed = 7
numpy.random.seed(seed)
# load pima indians dataset
dataset = numpy.loadtxt("pima-indians-diabetes.csv", delimiter=",")
# split into input (X) and output (Y) variables
X = dataset[:,0:8]
Y = dataset[:,8]
# create model
model = Sequential()
model.add(Dense(12, input_dim=8, kernel_initializer='uniform', activation='relu'))
model.add(Dense(8, kernel_initializer='uniform', activation='relu'))
model.add(Dense(1, kernel_initializer='uniform', activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Fit the model
history = model.fit(X, Y, validation_split=0.33, epochs=150, batch_size=10, verbose=0)
# list all data in history
print(history.history.keys())
# summarize history for accuracy
plt.plot(history.history['acc'])
plt.plot(history.history['val_acc'])
plt.title('model accuracy')
plt.ylabel('accuracy')
plt.xlabel('Epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()
# summarize history for loss
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('model loss')
plt.ylabel('loss')
plt.xlabel('Epoch')
plt.legend(['train', 'test'], loc='upper left')
plt.show()

コードはエポック履歴を収集してから、進捗履歴を表示します。


Q:トレーニング中にチャートを変更して、リアルタイムで変更を確認するにはどうすればよいですか?

12
Shlomi Schwartz

Jupyter Notebook for Keras(免責事項:私は作者です)に livelossplot Pythonライブトレーニングロスプロットのパッケージがあります)。

_from livelossplot import PlotLossesKeras

model.fit(X_train, Y_train,
          epochs=10,
          validation_data=(X_test, Y_test),
          callbacks=[PlotLossesKeras()],
          verbose=0)
_

それがどのように機能するかを確認するには、そのソース、特にこのファイルを見てください: https://github.com/stared/livelossplot/blob/master/livelossplot/core.py (_from IPython.display import clear_output_およびclear_output(wait=True))。

公平な免責事項: Kerasの出力に干渉します

enter image description here

8
Piotr Migdal

Kerasには TensorBoardのコールバック が付属しています。

この動作をモデルに簡単に追加して、ロギングデータの上でテンソルボードを実行するだけです。

callbacks = [TensorBoard(log_dir='./logs')]
result = model.fit(X, Y, ..., callbacks=callbacks)

そしてあなたのシェルで:

tensorboard --logdir=/logs

ノートブックで必要な場合は、独自のコールバックを記述して、トレーニング中にメトリックを取得することもできます。

 class LogCallback(Callback):

    def on_Epoch_end(self, Epoch, logs=None):
        print(logs["train_accuracy"])

これにより、現在のエポックの最後にトレーニングの精度が得られ、印刷されます。 公式のkerasサイトにその周りにいくつかの優れたドキュメントがあります。

6
Thomas Jungblut