Warum scheint mein Keras-Modell während des Trainings nur einen Teil meines Fashion-MNIST-Datensatzes zu verwenden, obwohl es 1875 Stapel verarbeitet?

Barbara Streisand
Freigeben: 2024-11-04 09:06:02
Original
793 Leute haben es durchsucht

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

Einschränkungen des Keras-Trainings: Teilweise Verwendung von Datensätzen auflösen

Beim Training eines neuronalen Netzwerkmodells mit Keras ist es wichtig sicherzustellen, dass der gesamte Datensatz vorhanden ist während des Trainings genutzt. In manchen Fällen können jedoch Probleme auftreten, bei denen nur ein Bruchteil der Daten verwendet wird. In diesem Artikel wird ein konkreter Fall untersucht, in dem ein auf dem Fashion-MNIST-Datensatz trainiertes Modell nur einen Teil der verfügbaren Daten verwendet, und bietet eine umfassende Erklärung und Lösung.

Das bereitgestellte Code-Snippet nutzt die Methode model.fit() mit Standardparameter, einschließlich einer Stapelgröße von 32. Dies bedeutet, dass das Modell während jeder Iteration oder Epoche 32 Stichproben aus dem Trainingsdatensatz verarbeitet. Im Fall des Fashion MNIST-Datensatzes, der aus 60.000 Stichproben besteht, müsste das Modell den gesamten Datensatz mehrmals durchlaufen, um das Training abzuschließen. Die in der Konsole angezeigte Ausgabe zeigt jedoch an, dass das Modell eine Epoche in 1875 Iterationen abschließt.

Diese Diskrepanz entsteht, weil die Methode model.fit() die Anzahl der während des Trainings verarbeiteten Batches meldet, nicht die Gesamtzahl von Proben. Daher trainiert das Modell in diesem Fall mit 1875 Chargen, die jeweils 32 Proben enthalten, was insgesamt 1875 * 32 = 60.000 Proben ergibt. Dies bedeutet, dass das Modell tatsächlich den gesamten Datensatz für das Training nutzt, trotz des irreführenden Fortschrittsbalkens, der in jeder Epoche „1875/1875“ anzeigt.

Um Verwirrung zu vermeiden und den Fortschritt des Trainingsprozesses genau zu verfolgen, wird es verwendet wird empfohlen, um die Anzahl der pro Epoche verarbeiteten Proben zu berechnen und anzuzeigen. Dies kann erreicht werden, indem der Code so geändert wird, dass er den Fortschritt wie folgt ausgibt:

<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>
Nach dem Login kopieren

Mit diesem Ansatz zeigt die Konsole den Fortschritt sowohl in Bezug auf Chargen als auch in Bezug auf Proben an und sorgt so für ein klares Verständnis des Trainingsprozesses und Bestätigung, dass das Modell den gesamten Datensatz wie vorgesehen nutzt.

Das obige ist der detaillierte Inhalt vonWarum scheint mein Keras-Modell während des Trainings nur einen Teil meines Fashion-MNIST-Datensatzes zu verwenden, obwohl es 1875 Stapel verarbeitet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!