1. Kernschichten in Keras
Keras bietet eine Vielzahl von grundlegenden Schichten (Layers), die als Bausteine für neuronale Netzwerke dienen. Hier sind einige der wichtigsten Kernschichten:
Dense (Vollverbunden): Diese Schicht ist vollständig mit der vorherigen Schicht verbunden. Jede Eingabe ist mit jedem Neuron verbunden.
Conv2D (2D-Faltung): Diese Schicht wird häufig in Convolutional Neural Networks (CNNs) verwendet, um Merkmale aus Bildern zu extrahieren.
MaxPooling2D (Max-Pooling): Diese Schicht reduziert die räumliche Dimension der Eingaben, indem sie das Maximum aus benachbarten Pixeln nimmt.
Flatten: Diese Schicht wandelt eine mehrdimensionale Eingabe in einen eindimensionalen Vektor um, der oft vor einer vollverbundenen Schicht verwendet wird.
Beispiel:
from keras.models import Sequential
from keras.layers import Dense, Conv2D, MaxPooling2D, Flatten
# Erstellen des Modells
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(28, 28, 1), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 26, 26, 32) 320
_________________________________________________________________
max_pooling2d (MaxPooling2D) (None, 13, 13, 32) 0
_________________________________________________________________
flatten (Flatten) (None, 5408) 0
_________________________________________________________________
dense (Dense) (None, 128) 692352
_________________________________________________________________
dense_1 (Dense) (None, 10) 1290
=================================================================
Total params: 693,962
Trainable params: 693,962
Non-trainable params: 0
_________________________________________________________________
2. Erweiterte Schichten (Dropout, BatchNormalization, etc.)
Erweiterte Schichten bieten zusätzliche Funktionen, um neuronale Netzwerke zu optimieren und zu regularisieren.
Dropout: Diese Schicht deaktiviert zufällig einen Bruchteil der Neuronen während des Trainings, um Überanpassung zu verhindern.
BatchNormalization: Diese Schicht normalisiert die Eingaben jeder Schicht, um die Trainingsgeschwindigkeit zu erhöhen und die Genauigkeit zu verbessern.
Embedding: Diese Schicht wandelt positive Ganzzahlen (Indizes) in dichte Vektoren fester Größe um, die häufig in NLP-Aufgaben verwendet werden.
Beispiel:
from keras.models import Sequential
from keras.layers import Dense, Dropout, BatchNormalization
# Erstellen des Modells
model = Sequential()
model.add(Dense(128, input_shape=(784,), activation='relu'))
model.add(Dropout(0.5))
model.add(BatchNormalization())
model.add(Dense(10, activation='softmax'))
# Kompilieren des Modells
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 128) 100480
_________________________________________________________________
dropout (Dropout) (None, 128) 0
_________________________________________________________________
batch_normalization (BatchNormalization) (None, 128) 512
_________________________________________________________________
dense_1 (Dense) (None, 10) 1290
=================================================================
Total params: 102,282
Trainable params: 102,026
Non-trainable params: 256
_________________________________________________________________
In diesem Beispiel wird Dropout verwendet, um 50 % der Neuronen zufällig während des Trainings zu deaktivieren, und BatchNormalization, um die Eingaben jeder Schicht zu normalisieren.
3. Aktivierungsfunktionen und ihre Anwendungsfälle
Aktivierungsfunktionen spielen eine entscheidende Rolle in neuronalen Netzwerken, da sie Nichtlinearitäten einführen, die es dem Netzwerk ermöglichen, komplexe Muster zu lernen.
ReLU (Rectified Linear Unit): Die am häufigsten verwendete Aktivierungsfunktion in versteckten Schichten. Sie gibt den Eingabewert zurück, wenn dieser positiv ist, und ansonsten 0.
Sigmoid: Gibt einen Wert zwischen 0 und 1 zurück. Häufig in der Ausgabeschicht für binäre Klassifikationsprobleme verwendet.
Softmax: Wandelt die Ausgaben in Wahrscheinlichkeiten um, sodass die Summe der Ausgaben 1 beträgt. Häufig in der Ausgabeschicht für Mehrklassenklassifikationsprobleme verwendet.
Tanh: Gibt einen Wert zwischen -1 und 1 zurück. Kann bei bestimmten Problemen nützlich sein, wo negative Ausgaben erwartet werden.
Beispiel:
from keras.models import Sequential
from keras.layers import Dense
# Erstellen des Modells
model = Sequential()
model.add(Dense(64, input_shape=(784,), activation='relu'))
model.add(Dense(32, activation='tanh'))
model.add(Dense(10, activation='softmax'))
# Kompilieren des Modells
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_2 (Dense) (None, 64) 50240
_________________________________________________________________
dense_3 (Dense) (None, 32) 2080
_________________________________________________________________
dense_4 (Dense) (None, 10) 330
=================================================================
Total params: 52,650
Trainable params: 52,650
Non-trainable params: 0
_________________________________________________________________
In diesem Beispiel verwenden wir ReLU in der ersten Schicht, Tanh in der zweiten Schicht und Softmax in der Ausgabeschicht.
Diese detaillierten Erklärungen und Beispiele sollten Ihnen helfen, die verschiedenen Schichten und Aktivierungsfunktionen in Keras zu verstehen und effektiv in Ihren Modellen zu verwenden.