ホームページ  >  記事  >  バックエンド開発  >  1875 個のバッチを処理しているにもかかわらず、Keras モデルがトレーニング中に Fashion MNIST データセットの一部しか使用していないように見えるのはなぜですか?

1875 個のバッチを処理しているにもかかわらず、Keras モデルがトレーニング中に Fashion MNIST データセットの一部しか使用していないように見えるのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-04 09:06:02831ブラウズ

Why does my Keras model seem to only use part of my Fashion MNIST dataset during training, even though it's processing 1875 batches?

Keras トレーニングの制限事項: 部分的なデータセットの使用の解決

Keras を使用してニューラル ネットワーク モデルをトレーニングする場合、データセット全体がトレーニング中に活用されます。ただし、場合によっては、データの一部のみが使用される場合に問題が発生する可能性があります。この記事では、ファッション MNIST データセットでトレーニングされたモデルが利用可能なデータの一部のみを使用する特定のケースを検討し、包括的な説明と解決策を提供します。

提供されたコード スニペットは、model.fit() メソッドを次のように利用します。これは、各反復またはエポック中に、モデルがトレーニング データセットから 32 個のサンプルを処理することを意味します。 60,000 個のサンプルで構成される Fashion MNIST データセットの場合、モデルはトレーニングを完了するためにデータセット全体を複数回反復する必要があります。ただし、コンソールに表示される出力は、モデルが 1875 回の反復で 1 エポックを完了していることを示しています。

この矛盾は、model.fit() メソッドがトレーニング中に総数ではなく、トレーニング中に処理されたバッチの数を報告するために発生します。サンプルの。したがって、この場合、モデルは 1875 のバッチでトレーニングされ、それぞれに 32 のサンプルが含まれ、合計 1875 * 32 = 60,000 のサンプルになります。これは、各エポック中に「1875/1875」と表示される誤解を招く進行状況バーにもかかわらず、モデルが実際にトレーニングにデータセット全体を利用していることを意味します。

混乱を避け、トレーニング プロセスの進行状況を正確に追跡するために、エポックごとに処理されるサンプル数を計算して表示することをお勧めします。これは、次のように進行状況を出力するようにコードを変更することで実現できます。

<code class="python">for epoch in range(10):
    print(f"Current Epoch: {epoch + 1}")
    for batch_idx in range(1875):
        model.train_step((train_images[batch_idx * 32 : (batch_idx + 1) * 32],
                          train_labels[batch_idx * 32 : (batch_idx + 1) * 32]))
        print(f"Batch {batch_idx + 1} processed.")</code>

このアプローチを使用すると、コンソールにバッチとサンプルの両方の観点から進行状況が表示され、トレーニング プロセスを明確に理解できるようになります。そして、モデルが意図したとおりにデータセット全体を利用していることを確認します。

以上が1875 個のバッチを処理しているにもかかわらず、Keras モデルがトレーニング中に Fashion MNIST データセットの一部しか使用していないように見えるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。