簡體   English   中英

Keras中每批后如何更新訓練日志輸出?

[英]How to update the training log output after each batch in Keras?

我正在使用 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

除了設置verbose=2之外,我在keras文檔中找不到任何選項,但這不會在訓練期間更新日志。

您可以使用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])

在您撰寫此問題時,還沒有內置解決方案。 您可以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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM