Я пытаюсь выполнить какое-то трансферное обучение, при котором мне нужно заморозить первые несколько слоев моей отдельной модели и настроить только последние несколько слоев с другим набором данных.
Я знаю, что , если мы ничего не замораживаем, мы просто устанавливаем для is_training значение True во время обучения и для is_training значение false во время тестирования. Но теперь мне было интересно, на что будет похоже поведение Batch-norm, если я исключу замороженные слои из обучаемых переменных с is_training, чтобы быть True.
Для того, чтобы заморозить слой "A", "B" и " C ", я сделал что-то вроде этого:
tvars = tf.contrib.framework.filter_variables(tf.trainable_variables(), exclude_patterns = ['A', 'B', 'C'])
grad = optimizer.comput_gradient(some_loss, tvars)
Но я не уверен, как мне установить« is_training »во время тренировки ... Насколько я понимаю, есть 2 обучаемые переменные" гамма "и "бета" для BatchNorm. Если я действительно надеюсь заморозить «A», «B», «C», мне нужно отключить операции обновления для них. Тем не менее, среднее значение и дисперсию по-прежнему необходимо обновлять во время трансферного обучения, верно? Tensorflow