2017-09-24 108 views
0

我正在Keras中使用tensorflow後端和Jupyter-Notebook來訓練我的模型。雖然MNIST示例在每批次後更新訓練日誌的輸出,但我在不同數據集上的新模型會爲每批輸出一個新值。現在,而不是使用詳細= 2,我希望看到每批後更新的值。如何在Keras中的每批次之後更新培訓日誌輸出?

我的擬合函數如下:

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文檔中找不到任何選項,但是這樣做培訓期間不更新日誌。

+0

我認爲它是一個問題'stdout',如果你在命令行運行你的代碼,我想你會看到的輸出如何會期待。這也是困擾我的東西...... – DJK

+1

[Keras詳細的培訓進度條可能會在每個批次問題上編寫一個新行]重複(https://stackoverflow.com/questions/41442276/keras-verbose-training-progress -bar寫作-A-新線路上的每批次的問題) – DJK

回答

0

您可以使用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]) 
相關問題