Menggunakan VGG16 dan ResNet50 sebagai Model Dasar
keras.applications.VGG16(weights='imagenet', include_top=False), menambahkan bagian kepala khusus.
Menggunakan VGG16 dan ResNet50 sebagai Model Dasar adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Modul Aplikasi Keras
tf.keras.applications menyediakan puluhan arsitektur yang telah dilatih sebelumnya dan dapat Anda unduh dalam satu baris. Dua model klasik adalah VGG16 (tumpukan konvolusi 3x3 yang sederhana dan dalam) dan ResNet50 (koneksi residual, lebih dalam dan lebih akurat).
Memuat VGG16 sebagai Basis
Muat VGG16 dengan bobot ImageNet, tetapi tanpa kepala classifier miliknya, sehingga Anda dapat memasang kepala sendiri.
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
)Memahami Argumen
weights="imagenet": muat bobot yang telah dilatih sebelumnya, bukan bobot acak.include_top=False: hapus classifier padat asli sehingga Anda dapat menambahkan classifier milik Anda.input_shape=(224,224,3): tinggi, lebar, dan 3 kanal RGB.
Pengaturan include_top=False membuat model dapat digunakan kembali untuk tugas baru.
Membekukan Basis
Tetapkan base.trainable = False agar bobot konvolusional yang telah dilatih sebelumnya tetap tidak berubah selama fase pelatihan pertama. Hanya kepala baru Anda yang akan belajar.
base.trainable = False
print(len(base.trainable_weights)) # -> 0 when frozenGlobalAveragePooling2D
Basis menghasilkan peta fitur 3D seperti (7, 7, 512). GlobalAveragePooling2D merata-ratakan setiap kanal pada kisi spasialnya, lalu mengubahnya menjadi satu vektor per kanal, yang di sini berukuran 512.
Lapisan ini menggantikan Flatten + Dense yang sangat besar, sehingga memangkas jumlah parameter secara drastis dan mengurangi penyesuaian berlebihan.
from tensorflow.keras.layers import GlobalAveragePooling2D
# (batch, 7, 7, 512) -> (batch, 512)
pooled = GlobalAveragePooling2D()(base.output)Menambahkan Kepala Keluaran Dense
Pasang lapisan Dense dengan ukuran yang sesuai dengan jumlah kelas Anda. Gunakan softmax untuk banyak kelas atau sigmoid untuk biner.
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)Beralih ke ResNet50
ResNet50 menggunakan antarmuka pemrograman yang sama. Koneksi residual (lompatan) memungkinkannya dilatih jauh lebih dalam tanpa gradien yang menghilang, biasanya dengan akurasi ImageNet yang lebih tinggi daripada VGG16 pada kecepatan yang serupa.
from tensorflow.keras.applications import ResNet50
base = ResNet50(
weights="imagenet",
include_top=False,
input_shape=(224, 224, 3)
)
base.trainable = FalseVGG16 vs ResNet50
- VGG16: sekitar 138 juta parameter, tumpukan 3x3 yang seragam dan sederhana, boros memori, mudah dipahami.
- ResNet50: sekitar 25 juta parameter, blok residual, lebih dalam, biasanya lebih akurat dan lebih hemat.
Untuk sebagian besar tugas pembelajaran transfer modern, ResNet50 merupakan pilihan bawaan yang lebih unggul.
Menyesuaikan Prapemrosesan
Setiap keluarga memiliki preprocess_input sendiri. VGG16 mengurangi nilai rata-rata RGB, sedangkan ResNet50 menggunakan penskalaan bergaya caffe yang serupa. Selalu impor yang sesuai dengan basis Anda.
from tensorflow.keras.applications.resnet50 import preprocess_input
x = preprocess_input(image_batch) # required for correct resultsMengompilasi Model
Dengan basis yang dibekukan, lakukan compile dan latih kepala menggunakan pengoptimal biasa.
model.compile(
optimizer="adam",
loss="categorical_crossentropy",
metrics=["accuracy"]
)
model.fit(train_ds, validation_data=val_ds, epochs=10)Memeriksa Arsitektur
Panggil model.summary() untuk memastikan basis telah dibekukan (jumlah parameter yang tidak dapat dilatih besar) dan hanya kepala yang dapat dilatih. Pemeriksaan dasar ini membantu menemukan kesalahan penyiapan sejak awal.
model.summary()
# Look at "Trainable params" vs "Non-trainable params"Uji Singkat
Periksa pemahaman Anda tentang pembuatan model pembelajaran transfer di Keras.
Ringkasan
Anda telah memuat VGG16 dan ResNet50 dengan weights="imagenet", include_top=False, dan input_shape=(224,224,3), membekukan basis dengan base.trainable=False, mengumpulkan fitur dengan GlobalAveragePooling2D, serta menambahkan kepala keluaran Dense.
ResNet50 merupakan pilihan bawaan yang lebih unggul. Berikutnya: mencabut pembekuan lapisan untuk melakukan penyetelan halus.
Belajar Python dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 53
- Pelajaran
- 225
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar” gratis?
Ya — teks lengkap “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar”?
keras.applications.VGG16(weights='imagenet', include_top=False), menambahkan bagian kepala khusus. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.
Berapa lama pelajaran “Menggunakan VGG16 dan ResNet50 sebagai Model Dasar” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Konsep dan Strategi Pembelajaran Transfer
- Menggunakan VGG16 dan ResNet50 sebagai Model Dasar
- Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang
- MobileNet dan EfficientNet untuk Penerapan di Perangkat Tepi