Mon*_*edi 5 python python-3.x jupyter keras jupyter-notebook
我在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
....
Run Code Online (Sandbox Code Playgroud)
如您所见,ETA,损失,acc输出始终附加在日志中,而不是替换第一行中的原始ETA /损失/ 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
Run Code Online (Sandbox Code Playgroud)
谢谢。
cas*_*dcl 18
我花了一段时间才看到这个,但我只是添加了对kerasin tqdm(version >= 4.41.0) 的内置支持,所以你可以这样做:
from tqdm.keras import TqdmCallback
...
model.fit(..., verbose=0, callbacks=[TqdmCallback(verbose=2)])
Run Code Online (Sandbox Code Playgroud)
这会关闭keras' progress ( verbose=0),tqdm而是使用。对于回调,verbose=2意味着 epochs 和 batches 的单独进度条。1表示完成后清除批处理条。0表示只显示纪元(从不显示批次条)。
Ala*_*off 10
您可以尝试Keras适应的TQDM进度栏库版本。
使用说明可以归结为:
例如,按pip install keras-tqdm(稳定)或pip install git+https://github.com/bstriner/keras-tqdm.git(对于最新的开发版本)安装
导入回调函数 from keras_tqdm import TQDMNotebookCallback
运行Keras' fit或fit_generatorwith verbose=0或verbose=2设置,但具有对导入的的回调TQDMNotebookCallback,例如model.fit(X_train, Y_train, verbose=0, callbacks=[TQDMNotebookCallback()])
结果: