[英]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.