[英]Keras CNN, verbose training progress bar display
我在https://stackoverflow.com/a/57475559/9531617 中给出了一个解决方案(不确定是否适用于每种情况,但对我来说效果很好)。 引用我自己的话:
只需安装ipykernel
并将其导入到您的代码中,即可在不修改源代码的情况下解决该问题:
pip install ipykernel
然后import ipykernel
事实上,在 Keras generic_utils.py 文件中,probematic 行是(在我的情况下):
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
并为我解决了问题。
作为在 Windows 操作系统上的快速修复,您可以最大化命令提示符窗口。 这将根据需要准确显示每个时期的进度条。
正如问题所述,这是针对我们正在导入的已定义进度条的包。
就我而言,问题因在一个 looooong 行上打印所有更新而变得更加复杂。 (PyCHARM 没有将 \\r 视为 EOL?)
如果您想快速修复进度条问题,这有助于缓解问题:
tensorflow_core.python.keras.utils.generic_utils.Progbar.__init__.__defaults__ = (10, 0, 5.0, None, 'step')
如果您想花更多的时间学习 Keras 而更少的时间处理奇怪的 UI 问题,则可以使用。
我认为这是Keras 详细训练进度条的副本,在每个批次问题上写了一个新行,但您可以使用tqdm
(>=4.41.0) 代替:
from tqdm.keras import TqdmCallback
...
model.fit(..., verbose=0, callbacks=[TqdmCallback(verbose=2)])
这会关闭keras
的进度( verbose=0
),并使用tqdm
代替。 对于回调, verbose=2
表示 epochs 和 batches 的单独进度条。 1
表示完成后清除批处理条。 0
表示只显示纪元(从不显示批次条)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.