繁体   English   中英

Keras CNN,详细训练进度条显示

[英]Keras CNN, verbose training progress bar display

在 Keras 中运行 CNN。 当它开始运行model.fit ,它会为每个批次打印进度条,如下所示

每个批次的进度条

是否可以显示每个时期的进度条? 像这样

在此处输入图片说明

这是我如何使用model.fit(x_train, y_train, nb_epoch = 1, batch_size = 32, verbose=1)我试图将verbose设置为 0 和 2,但没有进度条。

如果您有任何想法,请告诉我。 非常感谢

我在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_displayFalse ,而它需要为 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM