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
# 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 Ausgaberaumsactivation: 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
# 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 Faltungsfenstersstrides: 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
# Erstelle eine LSTM-Schicht mit 128 Einheiten
lstm_layer = LSTM(units=128, return_sequences=True)
Parameterbeschreibung:
units: positive ganze Zahl, Dimension des Ausgaberaumsreturn_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 Eingaberecurrent_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
# 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ältnisnoise_shape: Ganzzahl-Tensor, der die Form der binären Dropout-Maske darstellt, die mit der Eingabe multipliziert wirdseed: 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
# 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
# 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
# Erstelle eine Flatten-Schicht
flatten_layer = Flatten()
Embedding-Schicht
Wandelt positive Ganzzahlen (Indizes) in dichte Vektoren fester Größe um.
Beispiel
# 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.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
Eingabedatentyp:
- Bilddaten: Conv2D + Pooling-Schichten
- Sequenzdaten: LSTM/GRU
- Strukturierte Daten: Dense-Schichten
Modelltiefe:
- Tiefe Netzwerke müssen mit BatchNormalization und Dropout kombiniert werden
Aufgabentyp:
- Klassifikationsaufgabe: softmax-Aktivierung in der letzten Schicht verwenden
- Regressionsaufgabe: keine Aktivierungsfunktion oder eine lineare Aktivierung in der letzten Schicht verwenden
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