Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang
base_model.trainable = True, membuka pembekuan lapis demi lapis, laju pembelajaran diferensial.
Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 3 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.
Kapan Harus Melakukan Penyetelan Halus
Setelah ekstraksi fitur melatih kepala Anda, penyetelan halus dapat meningkatkan akurasi dengan memungkinkan bagian atas basis yang telah dilatih sebelumnya menyesuaikan diri dengan data Anda. Lakukan ini hanya setelah kepala stabil; jika tidak, gradien besar dari kepala acak dapat merusak basis.
Mencabut Pembekuan Basis
Tetapkan base.trainable = True agar bobot dapat diperbarui kembali. Dengan sendirinya, pengaturan ini mencabut pembekuan pada setiap lapisan, yang biasanya terlalu agresif.
base.trainable = True
print("Trainable layers:", sum(l.trainable for l in base.layers))Bekukan N Lapisan Pertama
Lapisan awal berisi pendeteksi tepi dan tekstur umum yang ingin Anda pertahankan. Bekukan kembali N lapisan pertama dan hanya lakukan penyetelan halus pada lapisan yang lebih dalam dan spesifik terhadap tugas.
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 = TrueMengapa Laju Pembelajaran Harus Sangat Rendah
Penyetelan halus memerlukan laju pembelajaran yang sangat kecil seperti 1e-5. Bobot yang telah dilatih sebelumnya sudah baik; Anda hanya ingin melakukan perubahan kecil. Laju yang besar menyebabkan pelupaan katastrofik dan menghapus pengetahuan ImageNet yang ingin Anda manfaatkan.
Kompilasi Ulang Setelah Mencabut Pembekuan
Anda harus melakukan kompilasi ulang setelah mengubah penanda kemampuan dilatih agar Keras membangun ulang bobot mana yang menerima gradien. Tetapkan laju pembelajaran yang rendah di sini.
from tensorflow.keras.optimizers import Adam
model.compile(
optimizer=Adam(learning_rate=1e-5),
loss="categorical_crossentropy",
metrics=["accuracy"]
)Proses Dua Fase
- Fase 1 (ekstraksi fitur): basis dibekukan, latih kepala dengan sekitar 1e-3 hingga akurasi validasi berhenti meningkat.
- Fase 2 (penyetelan halus): cabut pembekuan lapisan teratas, lakukan kompilasi ulang dengan sekitar 1e-5, lalu lanjutkan pelatihan.
Pembagian seperti ini menstabilkan pelatihan dan melindungi fitur yang telah dilatih sebelumnya.
Melanjutkan Pelatihan pada Fase 2
Lanjutkan pelatihan dari titik berhentinya fase 1 menggunakan initial_epoch agar catatan dan jadwal tetap berkesinambungan.
history2 = model.fit(
train_ds,
validation_data=val_ds,
epochs=20,
initial_epoch=10 # phase 1 ended at epoch 10
)Penjadwal Laju Pembelajaran
Penjadwal menurunkan laju pembelajaran secara bertahap seiring waktu sehingga pembaruan mengecil saat model mencapai konvergensi. ReduceLROnPlateau menurunkannya secara otomatis ketika kerugian validasi tidak lagi membaik.
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])Kehati-hatian terhadap BatchNorm
ResNet dan EfficientNet memiliki lapisan BatchNormalization yang melacak statistik berjalan. Saat melakukan penyetelan halus, membiarkan lapisan BN tetap dibekukan (atau berada dalam mode inferensi) sering kali memberikan hasil yang lebih stabil karena memperbarui statistiknya pada kumpulan data kecil dapat menurunkan akurasi.
Waspadai Pencocokan Berlebihan
Penyetelan halus menambahkan banyak parameter yang dapat dilatih, sehingga risiko pencocokan berlebihan meningkat. Atasilah dengan augmentasi data, Dropout, dan EarlyStopping berdasarkan kerugian validasi.
from tensorflow.keras.callbacks import EarlyStopping
stop = EarlyStopping(monitor="val_loss",
patience=4,
restore_best_weights=True)Menggabungkan Semuanya
Proses penyetelan halus yang tangguh: latih lapisan klasifikasi, buka pembekuan lapisan teratas, bekukan BN, kompilasi ulang pada 1e-5, lalu latih dengan penjadwal dan penghentian dini. Selalu bandingkan akurasi validasi sebelum dan sesudahnya untuk memastikan penyetelan halus benar-benar membantu.
Pemeriksaan Singkat
Uji pengetahuan Anda tentang penyetelan halus.
Rangkuman
Anda telah mempelajari cara melakukan penyetelan halus dengan menetapkan base.trainable=True, membekukan kembali N lapisan pertama, mengompilasi ulang pada laju pembelajaran yang sangat kecil (1e-5), dan menjalankan proses dua fase. Penjadwal laju pembelajaran dan penghentian dini membantu menjaganya tetap stabil, sedangkan lapisan BatchNorm perlu ditangani dengan cermat. Berikutnya: model ringan untuk penerapan pada perangkat tepi.
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 “Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang” gratis?
Ya — teks lengkap “Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang” 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 “Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang”?
base_model.trainable = True, membuka pembekuan lapis demi lapis, laju pembelajaran diferensial. 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 3 dari 4.
Berapa lama pelajaran “Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang” 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