在Keras中运行CNN。当它开始运行model.fit
时,它会打印每个批次的进度条,如此
是否可以显示每个纪元的进度条?喜欢这个
以下是我使用model.fit(x_train, y_train, nb_epoch = 1, batch_size = 32, verbose=1)
的方法
我试图将verbose
设置为0和2,但没有进度条。
如果您有任何想法,请告诉我。非常感谢
答案 0 :(得分:1)
我在https://stackoverflow.com/a/57475559/9531617中给出了一个解决方案(不确定是否可以在每种情况下都可以使用,但是对我来说很好用)。引用自己:
只需安装ipykernel
并将其导入您的代码即可解决该问题,而无需修改源代码:
pip install ipykernel
然后
import ipykernel
事实上,在Keras的generic_utils.py文件中,(在我的情况下)探测行是:
if self._dynamic_display:
sys.stdout.write('\b' * prev_total_width)
sys.stdout.write('\r')
else:
sys.stdout.write('\n')
self._dynamic_display
是False
的地方,而它必须为True才能正常工作。但是值self._dynamic_display已启动,例如:
self._dynamic_display = ((hasattr(sys.stdout, 'isatty') and
sys.stdout.isatty()) or
'ipykernel' in sys.modules)
因此,加载ipykernel
会将其添加到sys.modules
中,并为我解决了该问题。
答案 1 :(得分:0)
作为Windows操作系统上的快速解决方案,您可以最大化命令提示符窗口。这将根据需要准确显示每个纪元的进度条。
答案 2 :(得分:0)
正如问题所指出的,这是针对我们要导入且已定义进度条的软件包。
就我而言,将所有更新打印在一个looooong行上使问题更加复杂。 (PyCHARM不会将\ r视为EOL吗?)
如果您希望快速而肮脏地解决进度条问题,这有助于减轻问题:
tensorflow_core.python.keras.utils.generic_utils.Progbar.__init__.__defaults__ = (10, 0, 5.0, None, 'step')
如果您想花更多的时间学习Keras而花更少的时间处理怪异的UI问题,则可以使用。
答案 3 :(得分:0)
我认为这是Keras verbose training progress bar writing a new line on each batch issue的副本,但您可以改用tqdm
(> = 4.41.0):
from tqdm.keras import TqdmCallback
...
model.fit(..., verbose=0, callbacks=[TqdmCallback(verbose=2)])
这将关闭keras
的进度(verbose=0
),而改用tqdm
。对于回调,verbose=2
表示时期和批次的单独进度条。 1
表示完成后清除批处理栏。 0
表示仅显示纪元(从不显示批处理条)。