1. Ihr erstes neuronales Netzwerk mit Keras
import keras
from keras.models import Sequential
from keras.layers import Dense
# Erstellen des Modells
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# Kompilieren des Modells
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 12) 108
_________________________________________________________________
dense_1 (Dense) (None, 8) 104
_________________________________________________________________
dense_2 (Dense) (None, 1) 9
=================================================================
Total params: 221
Trainable params: 221
Non-trainable params: 0
_________________________________________________________________
In diesem Beispiel haben wir ein einfaches neuronales Netzwerk erstellt, das aus drei Schichten besteht: einer Eingabeschicht mit 12 Neuronen, einer versteckten Schicht mit 8 Neuronen und einer Ausgabeschicht mit 1 Neuron.
2. Verständnis der Keras Sequential API
Die Sequential API von Keras ist der einfachste Weg, ein Modell zu erstellen. Diese API erlaubt es, Schichten nacheinander zu stapeln, um ein Modell zu definieren. Hier sind einige wichtige Punkte, um die Sequential API zu verstehen:
- Einfachheit: Ideal für die meisten Modelle, die Schicht für Schicht gestapelt werden.
- Linearer Stapel: Jede Schicht hat genau eine Eingabe und eine Ausgabe.
Beispiel:
from keras.models import Sequential
from keras.layers import Dense
# Erstellen eines Sequenzmodells
model = Sequential()
# Hinzufügen von Schichten
model.add(Dense(32, input_shape=(784,), activation='relu'))
model.add(Dense(10, activation='softmax'))
# Kompilieren des Modells
model.compile(optimizer='sgd', loss='categorical_crossentropy', metrics=['accuracy'])
# Ausgabe der Modellzusammenfassung
print(model.summary())
Ausgabe:
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense_1 (Dense) (None, 32) 25120
_________________________________________________________________
dense_2 (Dense) (None, 10) 330
=================================================================
Total params: 25,450
Trainable params: 25,450
Non-trainable params: 0
_________________________________________________________________
Hier haben wir ein einfaches Modell mit zwei Schichten erstellt: einer dichten Schicht mit 32 Neuronen und einer Ausgabeschicht mit 10 Neuronen.
3. Erstellen eines einfachen Klassifikationsmodells
Lassen Sie uns ein einfaches Klassifikationsmodell erstellen, das auf dem berühmten MNIST-Datensatz basiert. Der MNIST-Datensatz besteht aus handgeschriebenen Ziffern, die in 10 Klassen (0-9) unterteilt sind.
Beispiel:
from keras.datasets import mnist
from keras.utils import np_utils
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.layers import Conv2D, MaxPooling2D
# Laden des MNIST-Datensatzes
(X_train, y_train), (X_test, y_test) = mnist.load_data()
# Vorverarbeitung der Daten
X_train = X_train.reshape(X_train.shape[0], 28, 28, 1).astype('float32') / 255
X_test = X_test.reshape(X_test.shape[0], 28, 28, 1).astype('float32') / 255
# One-Hot-Encoding der Labels
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10)
# Erstellen des Modells
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax'))
# Kompilieren des Modells
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# Training des Modells
model.fit(X_train, y_train, validation_data=(X_test, y_test), epochs=10, batch_size=200, verbose=2)
# Bewertung des Modells
scores = model.evaluate(X_test, y_test, verbose=0)
print(f"Genauigkeit: {scores[1]*100}%")
Ausgabe:
Epoch 1/10
300/300 - 37s - loss: 0.1918 - accuracy: 0.9447 - val_loss: 0.0534 - val_accuracy: 0.9826
...
Genauigkeit: 98.26%
In diesem Beispiel haben wir ein einfaches Convolutional Neural Network (CNN) für die Klassifizierung des MNIST-Datensatzes erstellt. Das Modell besteht aus einer Convolutional-Schicht, einer Max-Pooling-Schicht, einer Flatten-Schicht und zwei dichten Schichten. Nach dem Training bewerten wir die Genauigkeit des Modells auf den Testdaten.
Durch diese Schritte haben Sie nun ein grundlegendes Verständnis für die Arbeit mit Keras und können einfache neuronale Netzwerke und Klassifikationsmodelle erstellen.