Учитывая, что у меня есть тензорная переменная для training
, которая установлена на true
во время обучения и false
во время тестирования.
tf.layers.batch_normalization(input_tensor, training=training) # training = tensor
tf.metrics.mean(loss, updates_collections=tf.GraphKeys.UPDATE_OPS)
В дополнение к пакетной нормализации я добавляю свое собственное обновлениеops to UPDATE_OPS
.
update_ops = tf.get_collection(tf.GraphKeys.UPDATE_OPS)
def train_run(epoch):
sess.run([dataset.train_init_op, init_local]) # Sets training to true
for i in range(dataset.train_iterations_per_epoch):
sess.run([train_op, update_ops])
def test_run(epoch):
sess.run([dataset.test_init_op, init_local]) # Sets training to false
for i in range(dataset.test_iterations_per_epoch):
sess.run(update_ops)
UPDATE_OPS
в test_run
все еще содержит все операции нормализации партии, но training
имеет значение false.
Они все еще обновляютсязапуск операций пакетного обновления норм?
Или я путаю обучаемые переменные с метрическими операциями, и не имеет значения, обновляются ли они во время тестирования?