Поведение нормализации партии UPDATE_OPS при запуске во время тестирования - PullRequest
0 голосов
/ 09 февраля 2019

Учитывая, что у меня есть тензорная переменная для 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.

Они все еще обновляютсязапуск операций пакетного обновления норм?

Или я путаю обучаемые переменные с метрическими операциями, и не имеет значения, обновляются ли они во время тестирования?

...