1. Sequential Model
import keras
from keras.models import Sequential
from keras.layers import Dense
# Erstellen eines Sequential-Modells
model = Sequential()
model.add(Dense(32, input_shape=(784,), activation='relu'))
model.add(Dense(10, activation='softmax'))
# Kompilieren des Modells
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 32) 25120
_________________________________________________________________
dense_1 (Dense) (None, 10) 330
=================================================================
Total params: 25,450
Trainable params: 25,450
Non-trainable params: 0
_________________________________________________________________
In diesem Beispiel wird ein einfaches Sequential-Modell mit zwei Schichten erstellt: einer dichten Schicht mit 32 Neuronen und einer Ausgabeschicht mit 10 Neuronen.
2. Functional API
Die Functional API in Keras ermöglicht es, komplexere Modelle zu erstellen, die nicht einfach linear sind, wie beispielsweise Modelle mit mehreren Eingaben und Ausgaben oder Modelle mit geteilten Schichten. Mit der Functional API können Sie die Struktur eines Modells als ein gerichteter azyklischer Graph (DAG) definieren.
Beispiel:
from keras.models import Model
from keras.layers import Input, Dense
# Eingabeschicht
inputs = Input(shape=(784,))
# Versteckte Schicht
x = Dense(32, activation='relu')(inputs)
# Ausgabeschicht
outputs = Dense(10, activation='softmax')(x)
# Erstellen des Modells
model = Model(inputs=inputs, outputs=outputs)
# Kompilieren des Modells
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) [(None, 784)] 0
_________________________________________________________________
dense (Dense) (None, 32) 25120
_________________________________________________________________
dense_1 (Dense) (None, 10) 330
=================================================================
Total params: 25,450
Trainable params: 25,450
Non-trainable params: 0
_________________________________________________________________
In diesem Beispiel wird ein einfaches Modell mit der Functional API erstellt. Die Eingabeschicht wird explizit definiert, und die Schichten werden als Funktionen aufgerufen.
3. Modell-Unterklassen
Modell-Unterklassen bieten maximale Flexibilität und ermöglichen es, komplexe Modelle zu erstellen, indem man die Model-Klasse von Keras unterklassenweise erweitert. Dies ist besonders nützlich, wenn man eigene Trainingslogiken oder benutzerdefinierte Schichten implementieren möchte.
Beispiel:
from keras.models import Model
from keras.layers import Dense
import keras
class MyModel(Model):
def __init__(self):
super(MyModel, self).__init__()
self.dense1 = Dense(32, activation='relu')
self.dense2 = Dense(10, activation='softmax')
def call(self, inputs):
x = self.dense1(inputs)
return self.dense2(x)
# Erstellen des Modells
model = MyModel()
# Kompilieren des Modells
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "my_model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 32) 25120
_________________________________________________________________
dense_1 (Dense) (None, 10) 330
=================================================================
Total params: 25,450
Trainable params: 25,450
Non-trainable params: 0
_________________________________________________________________
In diesem Beispiel wird ein Modell durch Unterklassen von Model erstellt. Dies ermöglicht es, eine benutzerdefinierte Logik im call-Methodenaufruf zu implementieren.
4. Modelle speichern und laden
Das Speichern und Laden von Modellen ist ein wichtiger Schritt, um die trainierten Modelle für die zukünftige Verwendung oder Verteilung zu sichern. Keras bietet einfache Methoden, um Modelle zu speichern und wieder zu laden.
Modell speichern:
# Speichern des Modells
model.save('my_model.h5')
Modell laden:
from keras.models import load_model
# Laden des Modells
loaded_model = load_model('my_model.h5')
# Ausgabe der Modellzusammenfassung
print(loaded_model.summary())
Ausgabe:
Model: "my_model"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 32) 25120
_________________________________________________________________
dense_1 (Dense) (None, 10) 330
=================================================================
Total params: 25,450
Trainable params: 25,450
Non-trainable params: 0
_________________________________________________________________
Durch das Speichern und Laden von Modellen können Sie Ihre trainierten Netzwerke sichern und wiederverwenden, ohne das Training von Grund auf neu starten zu müssen. Dies ist besonders nützlich für die Verteilung und das Deployment von Modellen.
Diese detaillierten Erklärungen und Beispiele sollten Ihnen helfen, die verschiedenen Möglichkeiten zur Erstellung und Verwaltung von Keras-Modellen zu verstehen.