Keras + TensorFlow实时培训图表

Shl*_*rtz 10 python machine-learning keras tensorflow jupyter-notebook

我在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()
Run Code Online (Sandbox Code Playgroud)

代码收集时期历史记录,然后显示进度历史记录.


问:如何在培训时更改图表,以便实时查看更改?

Pio*_*dal 10

在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)
Run Code Online (Sandbox Code Playgroud)

要了解它是如何工作的,请查看其来源,尤其是此文件:https://github.com/stared/livelossplot/blob/master/livelossplot/core.py(from IPython.display import clear_outputclear_output(wait=True)).

一个公平的免责声明:它确实干扰了Keras输出.

在此输入图像描述

  • 仅适用于“ Jupyter”笔记本吗? (2认同)

Tho*_*lut 6

Keras带有一个回调TensorBoard.

您可以轻松地将此行为添加到模型中,然后在记录数据之上运行tensorboard.

callbacks = [TensorBoard(log_dir='./logs')]
result = model.fit(X, Y, ..., callbacks=callbacks)
Run Code Online (Sandbox Code Playgroud)

然后在你的shell上:

tensorboard --logdir=/logs
Run Code Online (Sandbox Code Playgroud)

如果您需要在笔记本中使用它,您还可以编写自己的回调以在培训时获取指标:

 class LogCallback(Callback):

    def on_epoch_end(self, epoch, logs=None):
        print(logs["train_accuracy"])
Run Code Online (Sandbox Code Playgroud)

这将在当前时期结束时获得训练准确性并打印出来.在官方keras网站上有一些很好的文档.