Keras Model.fit详细格式

时间:2018-09-10 16:01:05

标签: python python-3.x keras jupyter-notebook jupyter

我正在Jupyter笔记本中运行Keras model.fit(),如果将verbose设置为1,则输出将非常混乱。

    Train on 6400 samples, validate on 800 samples
    Epoch 1/200
    2080/6400 [========>.....................] - ETA: 39s - loss: 0.4383 - acc: 0.79 
    - ETA: 34s - loss: 0.3585 - acc: 0.84 - ETA: 33s - loss: 0.3712 - acc: 0.84 
    - ETA: 34s - loss: 0.3716 - acc: 0.84 - ETA: 33s - loss: 0.3675 - acc: 0.84 
    - ETA: 33s - loss: 0.3650 - acc: 0.84 - ETA: 34s - loss: 0.3759 - acc: 0.83 
    - ETA: 34s - loss: 0.3933 - acc: 0.82 - ETA: 34s - loss: 0.3985 - acc: 0.82 
    - ETA: 34s - loss: 0.4057 - acc: 0.82 - ETA: 33s - loss: 0.4071 - acc: 0.81 
    ....

如您所见,ETA,损失,acc输出始终附加在日志中,而不是像进度条的工作原理那样替换第一行中的原始ETA / loss / acc值。

我如何解决它,以便每个时期仅显示1行进度条,ETA,损失和acc?现在,随着训练的继续,我的细胞输出中有大量此类细胞。

我正在Windows 10上运行Python 3.6.1,具有以下模块版本:

jupyter                            1.0.0
jupyter-client                     5.0.1
jupyter-console                    5.1.0
jupyter-core                       4.3.0
jupyterthemes                      0.19.0
Keras                              2.2.0
Keras-Applications                 1.0.2
Keras-Preprocessing                1.0.1
tensorflow-gpu                     1.7.0

谢谢。

2 个答案:

答案 0 :(得分:5)

您可以尝试使用Keras适应的TQDM进度栏库版本。

使用说明可以归结为:

  1. 安装例如每个pip install keras-tqdm(稳定)或pip install git+https://github.com/bstriner/keras-tqdm.git(对于最新的dev版本)

  2. 使用from keras_tqdm import TQDMNotebookCallback

  3. 导入回调函数
  4. 使用fit设置运行Keras的fit_generatorverbose=0,但要回调导入的TQDMNotebookCallback,例如model.fit(X_train, Y_train, verbose=0, callbacks=[TQDMNotebookCallback])

结果:

enter image description here

答案 1 :(得分:0)

花点时间让我看看,但是tqdm(版本> = 4.41.0)也刚刚添加了对keras的内置支持,因此您可以这样做:

from tqdm.keras import TqdmCallback
...
model.fit(..., verbose=0, callbacks=[TqdmCallback(verbose=2)])

这将关闭keras的进度(verbose=0),而改用tqdm。对于回调,verbose=2表示时期和批次的单独进度条。 1表示完成后清除批处理栏。 0表示仅显示纪元(从不显示批处理条)。

如果有任何问题,请随时在https://github.com/tqdm/tqdm/issues上发布