Heim  >  Artikel  >  Backend-Entwicklung  >  Warum verändert sich die Keras-Dense-Layer-Eingabe unerwartet?

Warum verändert sich die Keras-Dense-Layer-Eingabe unerwartet?

Barbara Streisand
Barbara StreisandOriginal
2024-10-21 07:57:30228Durchsuche

Why Does the Keras Dense Layer Input Reshape Unexpectedly?

Unerwartete Umformung in der dichten Schicht von Keras: Das Geheimnis lüften

In Keras ist die dichte Schicht ein häufig verwendeter Baustein für neuronale Netze . Benutzer können jedoch auf ein unerwartetes Verhalten stoßen, bei dem die Eingabe vor der Anwendung der Operationen der Ebene nicht reduziert wird.

Im bereitgestellten Codeausschnitt:

input1 = layers.Input((2,3))
output = layers.Dense(4)(input1)

Anstatt den Eingabetensor input1 mit zu reduzieren Dimensionen (2,3) beobachten wir überraschenderweise eine Ausgabe eines Tensors mit den Dimensionen (?, 2, 4). Dies widerspricht der Behauptung der Dokumentation, dass Eingaben mit einem Rang größer als 2 abgeflacht werden sollten.

Eine Untersuchung der aktuellen Keras-Implementierung zeigt jedoch ein anderes Verhalten: Die dichte Ebene wird tatsächlich auf die letzte Achse des Eingabetensors angewendet. Das bedeutet, dass im gegebenen Beispiel jede 2D-Zeile von input1 unabhängig durch die dicht verbundene Schicht geleitet wird. Folglich behält die Ausgabe die erste Dimension bei und fügt der letzten Dimension die angegebene Anzahl von Einheiten (4) hinzu.

Diese Abweichung von der Dokumentation hat erhebliche Auswirkungen:

  • Die entsprechenden Operationen von TimeDistributed(Dense(...)) und Dense(...) über mehrdimensionale Eingaben.
  • Gemeinsame Gewichtsmatrizen über Einheiten in der dichten Ebene.

Beispiel :

model = Sequential()
model.add(Dense(10, input_shape=(20, 5)))

model.summary()

Die resultierende Modellzusammenfassung zeigt nur 60 trainierbare Parameter, obwohl die dicht verbundene Schicht 10 Einheiten hat. Dies liegt daran, dass jede Einheit mit identischen Gewichten mit den 5 Elementen jeder Reihe verbunden ist.

Visuelle Darstellung:

[Bild: Visuelle Darstellung des Auftragens einer dichten Schicht auf eine Eingabe mit zwei oder mehr Dimensionen in Keras]

Zusammenfassend lässt sich sagen, dass die dichte Ebene in Keras unabhängig auf die letzte Achse des Eingabetensors angewendet wird, was in bestimmten Szenarien zu einer nicht abgeflachten Ausgabe führt. Dieses Verhalten hat Auswirkungen auf das Modelldesign und die Parameterfreigabe.

Das obige ist der detaillierte Inhalt vonWarum verändert sich die Keras-Dense-Layer-Eingabe unerwartet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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