Fine-Tuning: Entsperren und erneutes Trainieren
base_model.trainable = True, schrittweises Entsperren einzelner Layer, differentielle Lernraten.
Fine-Tuning: Entsperren und erneutes Trainieren ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Learn AI with Python-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Wann ein Fine-Tuning sinnvoll ist
Nachdem die Feature-Extraktion Ihren Kopf trainiert hat, holt das Fine-Tuning zusätzliche Genauigkeit heraus, indem die oberen Schichten des vortrainierten Basismodells an Ihre Daten angepasst werden. Beginnen Sie damit erst, wenn der Kopf stabil ist; andernfalls können große Gradienten eines zufällig initialisierten Kopfes das Basismodell beschädigen.
Das Basismodell wieder freigeben
Setzen Sie base.trainable = True, damit die Gewichte wieder aktualisiert werden können. Dadurch wird allein bereits jede Schicht wieder trainierbar, was normalerweise zu aggressiv ist.
base.trainable = True
print("Trainable layers:", sum(l.trainable for l in base.layers))Die ersten N Schichten einfrieren
Frühe Schichten enthalten allgemeine Detektoren für Kanten und Texturen, die Sie beibehalten möchten. Frieren Sie die ersten N Schichten wieder ein und führen Sie das Fine-Tuning nur für die tieferen, aufgabenspezifischen Schichten durch.
base.trainable = True
freeze_until = 100 # keep first 100 layers frozen
for layer in base.layers[:freeze_until]:
layer.trainable = False
for layer in base.layers[freeze_until:]:
layer.trainable = TrueWarum eine sehr niedrige Lernrate
Fine-Tuning erfordert eine sehr kleine Lernrate wie 1e-5. Die vortrainierten Gewichte sind bereits gut; Sie möchten sie nur vorsichtig anpassen. Eine hohe Lernrate führt zu katastrophalem Vergessen und löscht das ImageNet-Wissen, wegen dessen Sie das Modell verwenden.
Nach dem Freigeben neu kompilieren
Nach einer Änderung der trainable-Flags müssen Sie das Modell neu kompilieren, damit Keras die Gewichte, die Gradienten erhalten, neu festlegt. Setzen Sie hier die niedrige Lernrate.
from tensorflow.keras.optimizers import Adam
model.compile(
optimizer=Adam(learning_rate=1e-5),
loss="categorical_crossentropy",
metrics=["accuracy"]
)Der Ablauf in zwei Phasen
- Phase 1 (Feature-Extraktion): Basismodell eingefroren, Kopf mit etwa 1e-3 trainieren, bis die Validierungsgenauigkeit ein Plateau erreicht.
- Phase 2 (Fine-Tuning): oberste Schichten wieder trainierbar machen, mit etwa 1e-5 neu kompilieren und das Training fortsetzen.
Diese Aufteilung stabilisiert das Training und schützt die vortrainierten Merkmale.
Das Training in Phase 2 fortsetzen
Setzen Sie das Training an der Stelle fort, an der Phase 1 endete, und verwenden Sie initial_epoch, damit Protokolle und Zeitpläne durchgängig bleiben.
history2 = model.fit(
train_ds,
validation_data=val_ds,
epochs=20,
initial_epoch=10 # phase 1 ended at epoch 10
)Scheduler für die Lernrate
Ein Scheduler verringert die Lernrate im Laufe der Zeit, sodass die Aktualisierungen bei der Konvergenz kleiner werden. ReduceLROnPlateau senkt die Lernrate automatisch, wenn der Validierungsverlust stagniert.
from tensorflow.keras.callbacks import ReduceLROnPlateau
lr_cb = ReduceLROnPlateau(
monitor="val_loss", factor=0.5,
patience=2, min_lr=1e-7
)
model.fit(train_ds, validation_data=val_ds,
epochs=20, callbacks=[lr_cb])Vorsicht bei BatchNorm
ResNet und EfficientNet enthalten BatchNormalization-Schichten, die laufende Statistiken erfassen. Beim Fine-Tuning führt es oft zu stabileren Ergebnissen, die BN-Schichten eingefroren zu lassen (oder sie im Inferenzmodus zu verwenden), da das Aktualisieren ihrer Statistiken auf einem kleinen Datensatz die Genauigkeit beeinträchtigen kann.
Auf Überanpassung achten
Feinabstimmung fügt viele trainierbare Parameter hinzu, wodurch das Risiko einer Überanpassung steigt. Wirken Sie dem mit Datenerweiterung, Dropout und EarlyStopping auf Basis des Validierungsverlusts entgegen.
from tensorflow.keras.callbacks import EarlyStopping
stop = EarlyStopping(monitor="val_loss",
patience=4,
restore_best_weights=True)Alles zusammenführen
Ein robuster Fine-Tuning-Ablauf: Trainieren Sie zunächst den Head, heben Sie anschließend die Sperre der obersten Schichten auf, frieren Sie BN ein, kompilieren Sie mit 1e-5 neu und trainieren Sie dann mit einem Scheduler und Early Stopping. Vergleichen Sie immer die Validierungsgenauigkeit vor und nach dem Fine-Tuning, um zu bestätigen, dass es tatsächlich geholfen hat.
Kurzer Check
Testen Sie Ihr Wissen über Fine-Tuning.
Zusammenfassung
Sie haben gelernt, ein Modell feinabzustimmen, indem Sie base.trainable=True setzen, die ersten N Schichten wieder einfrieren, mit einer sehr kleinen Lernrate (1e-5) neu kompilieren und einen Prozess in zwei Phasen ausführen. Ein Learning-Rate-Scheduler und Early Stopping sorgen für Stabilität, und BatchNorm-Schichten erfordern besondere Aufmerksamkeit. Als Nächstes: leichte Modelle für die Bereitstellung am Edge.
Häufig gestellte Fragen
Ist die Lektion „Fine-Tuning: Entsperren und erneutes Trainieren“ kostenlos?
Ja — der vollständige Text von „Fine-Tuning: Entsperren und erneutes Trainieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Learn AI with Python-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Learn AI with Python-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Fine-Tuning: Entsperren und erneutes Trainieren“?
base_model.trainable = True, schrittweises Entsperren einzelner Layer, differentielle Lernraten. Du übst Learn AI with Python mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Learn AI with Python zu starten?
Keine Vorkenntnisse erforderlich. Learn AI with Python auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „Fine-Tuning: Entsperren und erneutes Trainieren“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Learn AI with Python-Lektion Code schreiben und ausführen?
Ja. Jede Learn AI with Python-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Konzepte und Strategien des Transfer Learnings
- VGG16 und ResNet50 als Basismodelle verwenden
- Fine-Tuning: Entsperren und erneutes Trainieren
- MobileNet und EfficientNet für Edge-Deployment