Meneruskan `training = true` saat menggunakan melakukan pelatihan tensorflow

Dec 13 2020

Tutorial resmi TensorFlow mengatakan bahwa kita harus meneruskan base_model (trainin = False) selama pelatihan agar lapisan BN tidak memperbarui mean dan varians. pertanyaan saya adalah: mengapa? mengapa kita tidak perlu memperbarui mean dan varians, maksud saya BN memiliki imagenet mean dan variance dan mengapa berguna untuk menggunakan mean dan variance imagenet, dan tidak memperbaruinya pada data baru? bahkan selama fine tunning, dalam hal ini seluruh model memperbarui bobot tetapi lapisan BN masih akan memiliki imagenet mean dan varians. edit: saya menggunakan tutorial ini:https://www.tensorflow.org/tutorials/images/transfer_learning

Jawaban

1 AlexK. Dec 13 2020 at 20:16

Saat model dilatih dari inisialisasi, batchnorm harus diaktifkan untuk menyesuaikan mean dan variansnya seperti yang Anda sebutkan. Penyesuaian atau pemelajaran transfer adalah hal yang sedikit berbeda: Anda sudah memiliki model yang dapat melakukan lebih dari yang Anda butuhkan dan Anda ingin melakukan spesialisasi tertentu dari model terlatih untuk melakukan tugas / pekerjaan pada kumpulan data Anda. Dalam hal ini bagian dari bobot dibekukan dan hanya beberapa lapisan yang paling dekat dengan keluaran yang diubah. Karena lapisan BN digunakan di sekitar model, Anda juga harus membekukannya. Cek lagi penjelasan ini:

Catatan penting tentang lapisan BatchNormalization Banyak model berisi lapisan tf.keras.layers.BatchNormalization. Lapisan ini adalah kasus khusus dan tindakan pencegahan harus diambil dalam konteks penyempurnaan, seperti yang ditunjukkan nanti dalam tutorial ini.

Saat Anda menyetel layer.trainable = False, lapisan BatchNormalization akan berjalan dalam mode inferensi, dan tidak akan memperbarui statistik mean dan variansnya.

Saat Anda mencairkan model yang berisi lapisan BatchNormalization untuk melakukan penyempurnaan, Anda harus mempertahankan lapisan BatchNormalization dalam mode inferensi dengan meneruskan training = False saat memanggil model dasar. Jika tidak, pembaruan yang diterapkan pada bobot yang tidak dapat dilatih akan menghancurkan apa yang telah dipelajari model.

Sumber: pembelajaran transfer , detail tentang pembekuan