Keras Model.fit 详细格式

新手上路,请多包涵

我在 Jupyter notebook 中运行 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、loss、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

谢谢你。

原文由 Mongrel Jedi 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

你可以试试 Keras 适配版本的 TQDM 进度条库。

  • 原始 TQDM库: https ://github.com/tqdm/tqdm
  • TQDM 的 Keras 版本https ://github.com/bstriner/keras-tqdm

使用说明可以归结为:

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

  2. 导入回调函数 from keras_tqdm import TQDMNotebookCallback

  3. run Keras’ fit or fit_generator with verbose=0 or verbose=2 settings, but with a callback to the imported TQDMNotebookCallback , 例如 model.fit(X_train, Y_train, verbose=0, callbacks=[TQDMNotebookCallback()])

结果:

在此处输入图像描述

原文由 Alaroff 发布,翻译遵循 CC BY-SA 4.0 许可协议

我花了一段时间才看到这个,但我只是在 tqdm (版本 >= 4.41.0)中添加了对 keras 的内置支持,所以你可以这样做:

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

这将关闭 keras ‘ progress ( verbose=0 ),并使用 tqdm 代替。对于回调, verbose=2 意味着 epochs 和 batches 的单独进度条。 1 表示完成后清除批处理栏。 0 意味着只显示纪元(从不显示批次条)。

原文由 casper.dcl 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题