Keras Gängige Schichttypen

Keras ist eine High-Level-API für neuronale Netze, die eine große Vielfalt an Layer-Typen für den Aufbau von Deep-Learning-Modellen bietet.

Ein Layer ist der grundlegende Baustein von Keras. Jeder Layer empfängt Eingabedaten, führt eine bestimmte Transformation aus und gibt das Ergebnis aus.

In diesem Artikel werden die am häufigsten verwendeten Layer-Typen in Keras und ihre Verwendung ausführlich vorgestellt.


Kern-Layer-Typen

Dense – vollständig verbundener Layer

Der vollständig verbundene Layer ist der grundlegendste Layer eines neuronalen Netzes, bei dem jeder Eingabeknoten mit jedem Ausgabeknoten verbunden ist.

Beispiel

from keras.layers import Dense

# Erstelle eine vollständig verbundene Schicht mit 64 Neuronen unter Verwendung der ReLU-Aktivierungsfunktion
dense_layer = Dense(units=64, activation='relu')

Parameterbeschreibung:

  • units: positive ganze Zahl, Dimension des Ausgaberaums
  • activation: Aktivierungsfunktion, wie z. B. 'relu', 'sigmoid', 'tanh', 'softmax' usw.
  • use_bias: boolesch, ob ein Bias-Vektor verwendet werden soll (Standard: True)
  • kernel_initializer: Initialisierungsmethode für die Gewichtsmatrix

Anwendungsszenarien:

  • Wird in mehrschichtigen Perzeptronen (MLP) verwendet
  • Als letzte Schicht eines Klassifikators
  • Feature-Transformation und nichtlineare Abbildung

Conv2D 2D-Faltungsschicht

Wird hauptsächlich für Faltungsoperationen in der Bildverarbeitung verwendet und kann lokale Merkmale extrahieren.

Beispiel

from keras.layers import Conv2D

# Erstelle eine Faltungsschicht mit 32 3x3-Faltungskernen
conv_layer = Conv2D(filters=32, kernel_size=(3, 3), activation='relu')

Parameterbeschreibung:

  • filters: Ganzzahl, Dimension des Ausgaberaums (Anzahl der Faltungskerne)
  • kernel_size: Ganzzahl oder Tupel, Breite und Höhe des Faltungsfensters
  • strides: Faltungsschritt, Standard ist (1, 1)
  • padding: 'valid' (kein Padding) oder 'same' (Padding, sodass die Ausgabe dieselbe Größe wie die Eingabe hat)

Anwendungsszenarien:

  • Bildklassifikation
  • Objekterkennung
  • Bildsegmentierung

LSTM Long Short-Term Memory-Schicht

Eine rekurrente neuronale Netzwerkschicht, die zur Verarbeitung von Sequenzdaten verwendet wird und langfristige Abhängigkeiten erlernen kann.

Beispiel

from keras.layers import LSTM

# Erstelle eine LSTM-Schicht mit 128 Einheiten
lstm_layer = LSTM(units=128, return_sequences=True)

Parameterbeschreibung:

  • units: positive ganze Zahl, Dimension des Ausgaberaums
  • return_sequences: Boolean, ob die vollständige Sequenz zurückgegeben werden soll (Standard False)
  • dropout: Fließkommazahl zwischen 0 und 1, Dropout-Rate für die lineare Transformation der Eingabe
  • recurrent_dropout: Fließkommazahl zwischen 0 und 1, Dropout-Rate für den rekurrenten Zustand

Anwendungsszenarien:

  • Verarbeitung natürlicher Sprache
  • Zeitreihenvorhersage
  • Spracherkennung

Dropout Zufällige Deaktivierungsschicht

Während des Trainings wird die Ausgabe einiger Neuronen zufällig auf 0 gesetzt, um Overfitting zu verhindern.

Beispiel

from keras.layers import Dropout

# Erstelle eine Dropout-Schicht mit einer Dropout-Rate von 0.5
dropout_layer = Dropout(rate=0.5)

Parameterbeschreibung:

  • rate: Fließkommazahl zwischen 0 und 1, Dropout-Verhältnis
  • noise_shape: Ganzzahl-Tensor, der die Form der binären Dropout-Maske darstellt, die mit der Eingabe multipliziert wird
  • seed: Zufallszahlen-Seed

Anwendungsszenarien:

  • Neuronale Netzwerke vor Overfitting schützen
  • Generalisierungsfähigkeit des Modells verbessern
  • Wird normalerweise nach vollständig verbundenen Schichten verwendet

Weitere wichtige Schichttypen

BatchNormalization Batch-Normalisierungsschicht

Führt eine Batch-Normalisierung auf der Ausgabe der vorherigen Schicht durch, beschleunigt das Training und verbessert die Stabilität des Modells.

Beispiel

from keras.layers import BatchNormalization

# Batch-Normalisierungsschicht erstellen
bn_layer = BatchNormalization()

MaxPooling2D 2D-Max-Pooling-Schicht

Führt Downsampling an der Feature-Map durch, indem der maximale Wert innerhalb des Fensters verwendet wird.

Beispiel

from keras.layers import MaxPooling2D

# Erstelle eine 2x2-Max-Pooling-Schicht
pool_layer = MaxPooling2D(pool_size=(2, 2))

Flatten-Schicht

Flacht mehrdimensionale Eingaben zu einer Dimension ab; wird häufig für den Übergang von Faltungsschichten zu vollständig verbundenen Schichten verwendet.

Beispiel

from keras.layers import Flatten

# Erstelle eine Flatten-Schicht
flatten_layer = Flatten()

Embedding-Schicht

Wandelt positive Ganzzahlen (Indizes) in dichte Vektoren fester Größe um.

Beispiel

from keras.layers import Embedding

# Erstelle eine Embedding-Schicht mit einer Vokabulargröße von 1000 und einer Ausgabedimension von 64
embedding_layer = Embedding(input_dim=1000, output_dim=64)

Beispiel für Schichtkombination

Beispiel

from keras.models import Sequential
from keras.layers import Dense, Dropout, Conv2D, MaxPooling2D, Flatten

# Erstelle ein einfaches CNN-Modell
model = Sequential([
    Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
    MaxPooling2D((2, 2)),
    Conv2D(64, (3, 3), activation='relu'),
    MaxPooling2D((2, 2)),
    Flatten(),
    Dense(64, activation='relu'),
    Dropout(0.5),
    Dense(10, activation='softmax')
])

Richtlinien für die Auswahl von Schichten

  1. Eingabedatentyp:

    • Bilddaten: Conv2D + Pooling-Schichten
    • Sequenzdaten: LSTM/GRU
    • Strukturierte Daten: Dense-Schichten
  2. Modelltiefe:

    • Tiefe Netzwerke müssen mit BatchNormalization und Dropout kombiniert werden
  3. Aufgabentyp:

    • Klassifikationsaufgabe: softmax-Aktivierung in der letzten Schicht verwenden
    • Regressionsaufgabe: keine Aktivierungsfunktion oder eine lineare Aktivierung in der letzten Schicht verwenden
  4. Rechenressourcen:

    • Bei großen Eingaben sollten Pooling-Schichten in Betracht gezogen werden, um Parameter zu reduzieren
    • Wenn Ressourcen begrenzt sind, reduzieren Sie die Anzahl der Schichten und Units
Andere Erweiterungen