0Pricing
Learn AI with Python · Lektion

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 = True

Warum 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

  1. Phase 1 (Feature-Extraktion): Basismodell eingefroren, Kopf mit etwa 1e-3 trainieren, bis die Validierungsgenauigkeit ein Plateau erreicht.
  2. 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

  1. Konzepte und Strategien des Transfer Learnings
  2. VGG16 und ResNet50 als Basismodelle verwenden
  3. Fine-Tuning: Entsperren und erneutes Trainieren
  4. MobileNet und EfficientNet für Edge-Deployment
← Zurück zu Learn AI with Python