我正在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
谢谢。
答案 0 :(得分:5)
您可以尝试使用Keras适应的TQDM进度栏库版本。
使用说明可以归结为:
安装例如每个pip install keras-tqdm
(稳定)或pip install git+https://github.com/bstriner/keras-tqdm.git
(对于最新的dev版本)
使用from keras_tqdm import TQDMNotebookCallback
使用fit
设置运行Keras的fit_generator
或verbose=0
,但要回调导入的TQDMNotebookCallback
,例如model.fit(X_train, Y_train, verbose=0, callbacks=[TQDMNotebookCallback])
结果:
答案 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上发布