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: как я могу изменить график во время обучения, чтобы я мог видеть изменения в режиме реального времени?
2 ответов
здесь livelossplot пакет Python для живых сюжетов потери обучения в Jupyter Notebook для Keras (отказ от ответственности: я автор).
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 вывод.
Keras поставляется с вызов TensorBoard
.
вы можете легко добавить это поведение в свою модель, а затем просто запустить 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.