Learn AI with Python · Pelajaran

Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang

base_model.trainable = True, membuka pembekuan lapis demi lapis, laju pembelajaran diferensial.

Pelajaran 3 dari 413 langkah

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

Mengapa 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

  1. Fase 1 (ekstraksi fitur): basis dibekukan, latih kepala dengan sekitar 1e-3 hingga akurasi validasi berhenti meningkat.
  2. 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.

Gratis untuk memulai

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

  1. Konsep dan Strategi Pembelajaran Transfer
  2. Menggunakan VGG16 dan ResNet50 sebagai Model Dasar
  3. Penyetelan Halus: Membuka Pembekuan dan Melatih Ulang
  4. MobileNet dan EfficientNet untuk Penerapan di Perangkat Tepi
← Kembali ke Learn AI with Python