1. Einführung in TensorFlow Hub
2. Verwendung vortrainierter Modelle von TensorFlow Hub
2.1 Installation von TensorFlow Hub
pip install tensorflow tensorflow-hub
2.2 Laden und Verwenden eines vortrainierten Modells
import tensorflow as tf
import tensorflow_hub as hub
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras import layers, models
# Vortrainiertes Modell von TensorFlow Hub laden
model_url = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/classification/4"
model = tf.keras.Sequential([
hub.KerasLayer(model_url, input_shape=(224, 224, 3))
])
# Beispielbild laden und vorverarbeiten
image_url = "https://tensorflow.org/images/blogs/serving/cat.jpg"
image_path = tf.keras.utils.get_file("cat.jpg", image_url)
image = tf.image.decode_jpeg(tf.io.read_file(image_path))
image = tf.image.resize(image, [224, 224])
image = image / 255.0 # Normalisierung
# Bild klassifizieren
image = np.expand_dims(image, axis=0) # Batch-Dimension hinzufügen
predictions = model.predict(image)
predicted_class = np.argmax(predictions[0], axis=-1)
print(f"Predicted class: {predicted_class}")
In diesem Beispiel verwenden wir das vortrainierte MobileNetV2-Modell von TensorFlow Hub, um ein Bild zu klassifizieren. Das Bild wird geladen, vorverarbeitet und durch das Modell geschickt, um eine Vorhersage zu erhalten.
3. Fine-Tuning mit TensorFlow Hub Modellen
Fine-Tuning ist ein Prozess, bei dem ein vortrainiertes Modell auf eine spezifische Aufgabe angepasst wird, indem es auf einem neuen Datensatz weiter trainiert wird. Dies ermöglicht es, die bereits erlernten Merkmale des Modells zu nutzen und auf die spezifischen Anforderungen der neuen Aufgabe abzustimmen.
Beispiel: Fine-Tuning eines vortrainierten Modells
3.1 Installation von TensorFlow Hub
pip install tensorflow tensorflow-hub
3.2 Laden und Feinabstimmen eines vortrainierten Modells
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.keras import layers, models
from tensorflow.keras.preprocessing.image import ImageDataGenerator
# Vortrainiertes Modell von TensorFlow Hub laden
model_url = "https://tfhub.dev/google/tf2-preview/mobilenet_v2/feature_vector/4"
feature_extractor_layer = hub.KerasLayer(model_url, input_shape=(224, 224, 3), trainable=False)
# Aufbau des Modells
model = models.Sequential([
feature_extractor_layer,
layers.Dense(2, activation='softmax') # Beispiel: Binäre Klassifikation
])
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
# Beispiel-Datensatz laden und vorverarbeiten
# Hier verwenden wir ImageDataGenerator, um einen kleinen Datensatz zu erstellen
train_datagen = ImageDataGenerator(rescale=0.255, validation_split=0.2)
train_generator = train_datagen.flow_from_directory(
'path/to/data',
target_size=(224, 224),
batch_size=32,
class_mode='sparse',
subset='training'
)
validation_generator = train_datagen.flow_from_directory(
'path/to/data',
target_size=(224, 224),
batch_size=32,
class_mode='sparse',
subset='validation'
)
# Modell trainieren
model.fit(train_generator, epochs=5, validation_data=validation_generator)
# Fine-Tuning des gesamten Modells
feature_extractor_layer.trainable = True
model.compile(optimizer=tf.keras.optimizers.Adam(1e-5), loss='sparse_categorical_crossentropy', metrics=['accuracy'])
model.fit(train_generator, epochs=5, validation_data=validation_generator)
In diesem Beispiel laden wir das vortrainierte MobileNetV2-Feature-Extraktor-Modell und fügen eine neue Klassifikationsschicht hinzu. Zunächst frieren wir die Feature-Extraktor-Schicht ein und trainieren nur die neue Klassifikationsschicht. Anschließend führen wir ein Fine-Tuning durch, indem wir die Feature-Extraktor-Schicht auch trainierbar machen und das gesamte Modell weiter trainieren.
Mit diesen detaillierten Erklärungen und Beispielen können Sie die Grundlagen der Verwendung von TensorFlow Hub verstehen und lernen, wie Sie vortrainierte Modelle in Ihren Projekten einsetzen und anpassen können. TensorFlow Hub bietet eine leistungsfähige Möglichkeit, die Entwicklungszeit zu verkürzen und von der Arbeit anderer zu profitieren. Fine-Tuning ermöglicht es Ihnen, diese Modelle weiter zu optimieren und an Ihre spezifischen Anforderungen anzupassen.