【问题标题】:How to update the training log output after each batch in Keras?如何在 Keras 中每批后更新训练日志输出?
【发布时间】:2018-03-05 14:06:18
【问题描述】:

我正在使用 tensorflow 后端和 Jupyter-Notebook 在 Keras 中训练我的模型。虽然 MNIST 示例在每批之后更新训练日志的输出,但我在不同数据集上的新模型为每批输出一个新值。现在,我不想使用 verbose=2,而是希望在每批之后更新该值。

我的拟合函数如下所示:

model.fit(X, y_train, validation_split=0.33, epochs=1, batch_size=200, verbose=1)

输出如下:

    Train on 16415 samples, validate on 8085 samples
    Epoch 1/1
    16415/16415 [==============================] - 
ETA: 73s - loss: 9.0281 -acc: 0.44 - ETA: 49s - loss: 9.0271 - acc: 0.44 -  
ETA: 36s - loss: 8.7043 - acc: 0.46 - ETA: 33s - loss: 8.3979 - acc: 0.47 - 
ETA: 31s - loss: 8.3549 - acc: 0.48 - ETA: 29s - loss: 8.3011 - acc: 0.48 - 
ETA: 28s - loss: 8.1802 - acc: 0.49 - ETA: 27s - loss: 8.1220 - acc: 0.49 - 
ETA: 26s - loss: 8.0995 - acc: 0.49 - ETA: 26s - loss: 8.1178 - acc: 0.49 - 
ETA: 25s - loss: 8.1264 - acc: 0.49 - ETA: 24s - loss: 8.1274 - acc: 0.49 - 
ETA: 24s - loss: 8.0880 - acc: 0.49 - ETA: 23s - loss: 8.0860 - acc: 0.49 - 
ETA: 23s - loss: 8.0894 - acc: 0.49 - ETA: 22s - loss: 8.1303 - acc: 0.49 -
... 

但是,我希望在每批之后只看到一行更新,如下所示:

Epoch 1/1
        16415/16415 [==============================] - 
    ETA: 23s - loss: 9.0281 -acc: 0.44 - ETA: 22s - loss: 9.0271 - acc: 0.49

我在 keras 文档中除了设置 verbose=2 之外找不到任何选项,但这不会在训练期间更新日志。

【问题讨论】:

标签: python tensorflow keras jupyter-notebook


【解决方案1】:

在您撰写此问题时,还没有内置解决方案。您可以继承 tf.keras.callbacks.TensorBoard 并实现 on_batch_end 方法。 2018年加入Keras。

在 Tensorflow 中,您可以使用 tf.keras.callbacks.TensorBoard 类的 update_freq 参数并将其设置为 batch。

像这样:

tensorboard_callback = tf.keras.callbacks.TensorBoard(update_freq='batch')
tf_model.fit(x, y, epochs=1, callbacks=[tensorboard_callback])

【讨论】:

  • @AaronDT 有用吗?如果可行,请接受其中一个答案!
【解决方案2】:

您可以使用LambdaCallback 在批次和时期之间调用自定义函数。

使用on_batch_end参数传递函数调用:

from keras.callbacks import LambdaCallback

def batchOutput(batch, logs):

    print("Finished batch: " + str(batch))
    print(logs)

batchLogCallback = LambdaCallback(on_batch_end=batchOutput)

model.fit(x,y,....,callbacks=[batchLogCallback])

【讨论】:

    猜你喜欢
    • 2018-12-06
    • 2019-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多