Tensorflow eğitimini kullanırken "training = true" geçmek

Dec 13 2020

TensorFlow'un resmi öğreticisi, BN katmanının ortalama ve varyansı güncellememesi için eğitim sırasında base_model'i (trainin = False) geçmemiz gerektiğini söylüyor. sorum şu: neden? neden ortalamayı ve varyansı güncellememiz gerekmiyor, yani BN'nin imagenet ortalamasına ve varyansına sahip olduğunu ve neden imagenet'in ortalamasını ve varyansını kullanmak ve bunları yeni veriler üzerinde güncellememenin yararlı olduğunu kastediyorum? ince ayar sırasında bile, bu durumda tüm model ağırlıkları günceller, ancak BN katmanı yine de imagenet ortalamasına ve varyansa sahip olacaktır. düzenleme: bu öğreticiyi kullanıyorum:https://www.tensorflow.org/tutorials/images/transfer_learning

Yanıtlar

1 AlexK. Dec 13 2020 at 20:16

Model başlatmadan eğitildiğinde, batchnorm, bahsettiğiniz gibi ortalamalarını ve varyanslarını ayarlamak için etkinleştirilmelidir. Finetuning veya transfer öğrenimi biraz farklı bir şey: zaten ihtiyacınız olandan fazlasını yapabilen bir modele sahipsiniz ve görevinizi / veri setiniz üzerinde çalışmanızı yapmak için önceden eğitilmiş modelin özel uzmanlığını gerçekleştirmek istiyorsunuz. Bu durumda ağırlıkların bir kısmı dondurulur ve yalnızca çıktıya en yakın bazı katmanlar değiştirilir. Modelin her yerinde BN katmanları kullanıldığından, onları da dondurmalısınız. Bu açıklamayı tekrar kontrol edin:

BatchNormalization katmanları hakkında önemli not Birçok model tf.keras.layers.BatchNormalization katmanlarını içerir. Bu katman özel bir durumdur ve bu öğreticide daha sonra gösterildiği gibi, ince ayar bağlamında önlemler alınmalıdır.

Layer.trainable = False ayarını yaptığınızda, BatchNormalization katmanı çıkarım modunda çalışacak ve ortalama ve varyans istatistiklerini güncellemeyecektir.

İnce ayar yapmak için BatchNormalization katmanları içeren bir modeli çözdüğünüzde, temel modeli çağırırken training = False geçerek BatchNormalization katmanlarını çıkarım modunda tutmalısınız. Aksi takdirde eğitilemeyen ağırlıklara uygulanan güncellemeler modelin öğrendiklerini yok edecektir.

Kaynak: aktarım öğrenimi , dondurma ile ilgili ayrıntılar