web-dev-qa-db-ja.com

Keras Model.fit冗長フォーマット

私はJupyterノートブックでKeras model.fit()を実行していますが、verboseが1に設定されていると、出力が非常に乱雑になります。

    Train on 6400 samples, validate on 800 samples
    Epoch 1/200
    2080/6400 [========>.....................] - ETA: 39s - loss: 0.4383 - acc: 0.79 
    - ETA: 34s - loss: 0.3585 - acc: 0.84 - ETA: 33s - loss: 0.3712 - acc: 0.84 
    - ETA: 34s - loss: 0.3716 - acc: 0.84 - ETA: 33s - loss: 0.3675 - acc: 0.84 
    - ETA: 33s - loss: 0.3650 - acc: 0.84 - ETA: 34s - loss: 0.3759 - acc: 0.83 
    - ETA: 34s - loss: 0.3933 - acc: 0.82 - ETA: 34s - loss: 0.3985 - acc: 0.82 
    - ETA: 34s - loss: 0.4057 - acc: 0.82 - ETA: 33s - loss: 0.4071 - acc: 0.81 
    ....

ご覧のように、プログレスバーのように、最初の行の元のETA/loss/acc値を置き換えるのではなく、ETA、損失、acc出力がログに追加され続けます。

エポックごとに1行のプログレスバー、ETA、損失とaccのみが表示されるように修正するにはどうすればよいですか?現在、トレーニングを続けると、私のセル出力にはこれらのラインがたくさんあります。

Windows 10でPython 3.6.1を次のモジュールバージョンで実行しています。

jupyter                            1.0.0
jupyter-client                     5.0.1
jupyter-console                    5.1.0
jupyter-core                       4.3.0
jupyterthemes                      0.19.0
Keras                              2.2.0
Keras-Applications                 1.0.2
Keras-Preprocessing                1.0.1
tensorflow-gpu                     1.7.0

ありがとうございました。

8
Mongrel Jedi

Keras対応バージョンのTQDMプログレスバーライブラリを試すことができます。

使用方法は以下に分類できます。

  1. インストールします。 _pip install keras-tqdm_(安定版)または_pip install git+https://github.com/bstriner/keras-tqdm.git_(最新の開発バージョン用)ごと

  2. _from keras_tqdm import TQDMNotebookCallback_を使用してコールバック関数をインポートする

  3. kerasのfitまたは_fit_generator_を_verbose=0_または_verbose=2_設定で実行しますが、インポートされたTQDMNotebookCallbackへのコールバックを使用します。 model.fit(X_train, Y_train, verbose=0, callbacks=[TQDMNotebookCallback()])

結果:

enter image description here

15
Alaroff

これを見るのにしばらく時間がかかりましたが、tqdm(バージョン> = 4.41.0)もkerasの組み込みサポートを追加したので、次のことができます。

from tqdm.keras import TqdmCallback
...
model.fit(..., verbose=0, callbacks=[TqdmCallback(verbose=2)])

これにより、keras 'の進行状況がオフになります(verbose=0)、代わりにtqdmを使用します。コールバックの場合、verbose=2は、エポックとバッチの別々のプログレスバーを意味します。 1は、完了時にバッチバーをクリアすることを意味します。 0は、エポックのみを表示する(バッチバーを表示しない)ことを意味します。

問題がある場合は、遠慮なく投稿してください https://github.com/tqdm/tqdm/issues

3
casper.dcl