Передача `training = true` при использовании обучения тензорному потоку
В официальном руководстве TensorFlow говорится, что мы должны передавать base_model (trainin = False) во время обучения, чтобы слой BN не обновлял среднее значение и дисперсию. у меня вопрос: почему? почему нам не нужно обновлять среднее значение и дисперсию, я имею в виду, что BN имеет среднее значение и дисперсию imagenet и почему полезно использовать среднее значение и дисперсию imagenet, а не обновлять их на новых данных? даже во время точной настройки, в этом случае вся модель обновляет веса, но слой BN по-прежнему будет иметь среднее значение и дисперсию изображения. изменить: я использую этот учебник:https://www.tensorflow.org/tutorials/images/transfer_learning
Ответы
Когда модель обучается с момента инициализации, следует включить batchnorm, чтобы настроить их среднее значение и дисперсию, как вы упомянули. Тонкая настройка или трансферное обучение - это немного другое дело: у вас уже есть модель, которая может делать больше, чем вам нужно, и вы хотите выполнить определенную специализацию предварительно обученной модели для выполнения вашей задачи / работы с вашим набором данных. В этом случае часть весов замораживается, и меняются только некоторые слои, ближайшие к выходу. Поскольку слои BN используются повсюду вокруг модели, их также следует заморозить. Еще раз проверьте это объяснение:
Важное примечание о слоях BatchNormalization Многие модели содержат слои tf.keras.layers.BatchNormalization. Этот слой является особым случаем, и следует принять меры предосторожности в контексте тонкой настройки, как показано далее в этом руководстве.
Когда вы устанавливаете layer.trainable = False, уровень BatchNormalization будет работать в режиме вывода и не будет обновлять свою статистику среднего значения и дисперсии.
Когда вы размораживаете модель, которая содержит слои BatchNormalization, чтобы выполнить точную настройку, вы должны держать слои BatchNormalization в режиме вывода, передавая training = False при вызове базовой модели. В противном случае обновления, применяемые к необучаемым весам, уничтожат то, чему модель научилась.
Источник: трансферное обучение , подробности о замораживании