簡體   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