GPU verwenden
Training um 10x beschleunigen
Erstellen Sie neuronale Netzwerke mit TensorFlow und Keras. Von grundlegenden Konzepten bis zu fortgeschrittenen CNN und RNN Architekturen für Computer Vision und Natural Language Processing.
🎯 Intermediate Level
25 min Lesezeit
💻 Hands-On
Mit TensorFlow Code
🔥 GPU-optimiert
Performance-Tipps
Training um 10x beschleunigen
Stabileres Training
Overfitting vermeiden
Training visualisieren
Deep Learning ist ein Teilbereich des Machine Learning, der von der Struktur und Funktion des menschlichen Gehirns inspiriert ist. Es verwendet künstliche neuronale Netzwerke mit mehreren Schichten (daher "deep"), um komplexe Muster in großen Datenmengen zu erkennen.
Bilderkennung, Objekterkennung, medizinische Bildanalyse
Language translation, chatbots, text analysis
Spracherkennung, Musikgenerierung, Audioanalyse
Basic neural networks for tabular data
MNIST Ziffernerkennung
Hauspreisvorhersage
Klassifikation
Regression
Especially for image processing and Computer Vision
Bilderkennung
Objekterkennung
Medizinische Bildanalyse
Gesichtserkennung
For sequential data such as text and time series
Language translation
Zeitserien-Vorhersage
Chatbots
Sentiment-Analyse
TensorFlow ist Googles Open-Source-Framework für Machine Learning, und Keras ist die benutzerfreundliche High-Level-API, die in TensorFlow integriert ist.
# CPU Version (für erste Experimente) pip install tensorflow # GPU Version (für ernsthafte Projekte) pip install tensorflow-gpu # Zusätzliche hilfreiche Pakete pip install numpy pandas matplotlib seaborn pip install scikit-learn jupyter notebook # Jupyter Lab für bessere Entwicklungserfahrung pip install jupyterlab
import tensorflow as tf
import keras
import numpy as np
# TensorFlow Version prüfen
print(f"TensorFlow Version: {tf.__version__}")
print(f"Keras Version: {keras.__version__}")
# GPU Verfügbarkeit prüfen
print(f"GPU available: {tf.config.list_physical_devices('GPU')}")
# Einfache Tensor-Operationen
a = tf.constant([[1, 2], [3, 4]])
b = tf.constant([[2, 0], [0, 2]])
c = tf.matmul(a, b)
print(f"Matrix Multiplikation:\n{c.numpy()}")Wir erstellen ein einfaches neuronales Netzwerk für die Klassifikation von handgeschriebenen Ziffern (MNIST-Dataset). Perfekt für den Einstieg in Deep Learning.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import numpy as np
import matplotlib.pyplot as plt
# 1. Daten laden und vorbereiten
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
# Daten normalisieren (0-1 Bereich)
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
# Shape prüfen
print(f"Training Data: {x_train.shape}")
print(f"Training Labels: {y_train.shape}")
# 2. Modell definieren
model = keras.Sequential([
layers.Flatten(input_shape=(28, 28)), # 28x28 -> 784
layers.Dense(128, activation='relu'), # Hidden Layer 1
layers.Dropout(0.2), # Regularisierung
layers.Dense(64, activation='relu'), # Hidden Layer 2
layers.Dense(10, activation='softmax') # Output Layer
])
# 3. Modell kompilieren
model.compile(
optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy']
)
# 4. Modell-Architektur anzeigen
model.summary()
# 5. Modell trainieren
history = model.fit(
x_train, y_train,
epochs=10,
batch_size=32,
validation_split=0.2,
verbose=1
)
# 6. Modell evaluieren
test_loss, test_accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test Accuracy: {test_accuracy:.4f}")
# 7. Vorhersagen machen
predictions = model.predict(x_test[:5])
predicted_classes = np.argmax(predictions, axis=1)
print(f"Vorhergesagte Klassen: {predicted_classes}")
print(f"Echte Klassen: {y_test[:5]}")# Training-Verlauf plotten
plt.figure(figsize=(12, 4))
plt.subplot(1, 2, 1)
plt.plot(history.history['accuracy'])
plt.plot(history.history['val_accuracy'])
plt.title('Model Accuracy')
plt.ylabel('Accuracy')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'])
plt.subplot(1, 2, 2)
plt.plot(history.history['loss'])
plt.plot(history.history['val_loss'])
plt.title('Model Loss')
plt.ylabel('Loss')
plt.xlabel('Epoch')
plt.legend(['Train', 'Validation'])
plt.tight_layout()
plt.show()# Komplettes Modell speichern
model.save('mnist_model.h5')
# Nur Gewichte speichern
model.save_weights('mnist_weights.h5')
# Modell laden
loaded_model = keras.models.load_model('mnist_model.h5')
# Architektur als JSON
model_json = model.to_json()
with open("model.json", "w") as json_file:
json_file.write(model_json)High-level API for simple model development
Intuitive API
Eager Execution
Auto-Differentiation
Distributed Training
Visualisierung und Monitoring von Training
Loss Curves
Model Graph
Histogram
Embeddings
End-to-end ML Pipeline for Production
Data Validation
Model Serving
Monitoring
A/B Testing
Mobile und Edge Device Deployment
Quantization
Pruning
Hardware Optimization
Cross-Platform
Convolutional Neural Networks (CNNs) sind speziell für die Verarbeitung von Bilddaten entwickelt und erzielen hervorragende Ergebnisse in der Computer Vision. Ideal fürComputer Vision Projekte.
Wendet Filter auf das Bild an, um Features wie Kanten, Texturen zu erkennen.
Reduziert die Größe und macht das Modell robuster gegen kleine Verschiebungen.
Klassische Dense Layer für die finale Klassifikation nach Feature-Extraktion.
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
# 1. CIFAR-10 Daten laden
(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()
# Daten normalisieren
x_train = x_train.astype('float32') / 255.0
x_test = x_test.astype('float32') / 255.0
# Labels zu kategorisch
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)
# 2. CNN Modell definieren
model = keras.Sequential([
# Erste Convolution Block
layers.Conv2D(32, (3, 3), activation='relu', input_shape=(32, 32, 3)),
layers.BatchNormalization(),
layers.Conv2D(32, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Dropout(0.25),
# Zweite Convolution Block
layers.Conv2D(64, (3, 3), activation='relu'),
layers.BatchNormalization(),
layers.Conv2D(64, (3, 3), activation='relu'),
layers.MaxPooling2D((2, 2)),
layers.Dropout(0.25),
# Dritte Convolution Block
layers.Conv2D(128, (3, 3), activation='relu'),
layers.BatchNormalization(),
layers.Dropout(0.25),
# Klassifikation
layers.Flatten(),
layers.Dense(512, activation='relu'),
layers.BatchNormalization(),
layers.Dropout(0.5),
layers.Dense(10, activation='softmax')
])
# 3. Kompilieren mit verbesserter Konfiguration
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=0.001),
loss='categorical_crossentropy',
metrics=['accuracy']
)
# 4. Callbacks definieren
callbacks = [
keras.callbacks.EarlyStopping(patience=10, restore_best_weights=True),
keras.callbacks.ReduceLROnPlateau(factor=0.5, patience=5),
keras.callbacks.ModelCheckpoint('best_model.h5', save_best_only=True)
]
# 5. Training mit Data Augmentation
datagen = keras.preprocessing.image.ImageDataGenerator(
rotation_range=15,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
zoom_range=0.1
)
datagen.fit(x_train)
# 6. Modell trainieren
history = model.fit(
datagen.flow(x_train, y_train, batch_size=32),
epochs=100,
validation_data=(x_test, y_test),
callbacks=callbacks,
verbose=1
)
# 7. Evaluation
test_loss, test_accuracy = model.evaluate(x_test, y_test, verbose=0)
print(f"Test Accuracy: {test_accuracy:.4f}")Modell lernt Trainingsdaten auswendig, performt schlecht auf neuen Daten
→ Dropout, Early Stopping, Regularization
Gradienten werden zu klein in tiefen Netzwerken
→ Batch Norm, ReLU, Residual Connections
Unsere KI-Experten unterstützen Sie bei der Entwicklung und Implementierung von Deep Learning Lösungen.