VGG16 und ResNet50 als Basismodelle verwenden
keras.applications.VGG16(weights='imagenet', include_top=False), Hinzufügen eines benutzerdefinierten Heads.
VGG16 und ResNet50 als Basismodelle verwenden ist eine kostenlose Learn AI with Python-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Das Keras-Anwendungsmodul
tf.keras.applications stellt Dutzende vortrainierter Architekturen bereit, die Sie mit einer einzigen Zeile herunterladen können. Zwei Klassiker sind VGG16 (einfacher, tiefer Stapel aus 3x3-Faltungen) und ResNet50 (Residualverbindungen, tiefer und genauer).
VGG16 als Basismodell laden
Laden Sie VGG16 mit ImageNet-Gewichten, aber ohne den Klassifikationskopf, damit Sie Ihren eigenen hinzufügen können.
from tensorflow.keras.applications import VGG16
base = VGG16(
weights="imagenet", # download pretrained weights
include_top=False, # drop the 1000-class classifier
input_shape=(224, 224, 3) # standard ImageNet input size
)Die Argumente verstehen
weights="imagenet": vortrainierte statt zufälliger Gewichte laden.include_top=False: den ursprünglichen Dense-Klassifikator entfernen, damit Sie Ihren eigenen hinzufügen können.input_shape=(224,224,3): Höhe, Breite und 3 RGB-Kanäle.
Das Setzen von include_top=False macht das Modell für eine neue Aufgabe wiederverwendbar.
Das Basismodell einfrieren
Setzen Sie base.trainable = False, damit die vortrainierten Faltungsgewichte während der ersten Trainingsphase unverändert bleiben. Nur Ihr neuer Kopf wird lernen.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
Das Basismodell gibt eine 3D-Merkmalskarte wie (7, 7, 512) aus. GlobalAveragePooling2D mittelt jeden Kanal über sein räumliches Raster und reduziert ihn auf einen einzelnen Vektor pro Kanal, hier mit der Länge 512.
Dies ersetzt eine riesige Kombination aus Flatten und Dense, reduziert die Anzahl der Parameter drastisch und verringert die Überanpassung.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Den Dense-Ausgabekopf hinzufügen
Fügen Sie eine Dense-Schicht hinzu, deren Größe der Anzahl Ihrer Klassen entspricht. Verwenden Sie softmax für mehrere Klassen oder sigmoid für eine binäre Klassifikation.
from tensorflow.keras import layers, Model
x = base.output
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.3)(x)
outputs = layers.Dense(10, activation="softmax")(x)
model = Model(inputs=base.input, outputs=outputs)Zu ResNet50 wechseln
ResNet50 verwendet dieselbe API. Seine Residualverbindungen (Skip Connections) ermöglichen ein deutlich tieferes Training ohne verschwindende Gradienten. Bei ähnlicher Geschwindigkeit erreicht es bei ImageNet normalerweise eine höhere Genauigkeit als VGG16.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16 vs. ResNet50
- VGG16: etwa 138 Mio. Parameter, einfacher einheitlicher Stapel aus 3x3-Faltungen, hoher Speicherbedarf, leicht verständlich.
- ResNet50: etwa 25 Mio. Parameter, Residualblöcke, tiefer, normalerweise höhere Genauigkeit und ressourcenschonender.
Für die meisten modernen Transfer-Learning-Aufgaben ist ResNet50 die bessere Standardwahl.
Vorverarbeitung abstimmen
Jede Modellfamilie hat ihre eigene Funktion preprocess_input. VGG16 zieht mittlere RGB-Werte ab, während ResNet50 eine ähnliche Caffe-artige Skalierung verwendet. Importieren Sie immer die Funktion, die zu Ihrem Basismodell passt.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct resultsDas Modell kompilieren
Während das Basismodell eingefroren ist, kompilieren und trainieren Sie den Kopf mit einem üblichen Optimierer.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)Die Architektur überprüfen
Rufen Sie model.summary() auf, um zu bestätigen, dass das Basismodell eingefroren ist (Non-trainable params ist groß) und nur der Kopf trainierbar ist. Diese Plausibilitätsprüfung erkennt Fehler bei der Einrichtung frühzeitig.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"Kurzer Test
Überprüfen Sie Ihr Verständnis beim Aufbau eines Transfer-Learning-Modells in Keras.
Zusammenfassung
Sie haben VGG16 und ResNet50 mit weights="imagenet", include_top=False und input_shape=(224,224,3) geladen, das Basismodell mit base.trainable=False eingefroren, Merkmale mit GlobalAveragePooling2D zusammengefasst und einen Dense-Ausgabekopf hinzugefügt.
ResNet50 ist die bessere Standardwahl. Als Nächstes machen wir Schichten wieder trainierbar, um ein Fine-Tuning durchzuführen.
Häufig gestellte Fragen
Ist die Lektion „VGG16 und ResNet50 als Basismodelle verwenden“ kostenlos?
Ja — der vollständige Text von „VGG16 und ResNet50 als Basismodelle verwenden“ 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 „VGG16 und ResNet50 als Basismodelle verwenden“?
keras.applications.VGG16(weights='imagenet', include_top=False), Hinzufügen eines benutzerdefinierten Heads. 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 2 von 4.
Wie lange dauert die Lektion „VGG16 und ResNet50 als Basismodelle verwenden“?
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