Как я могу быстро проверить, какие переменные тензорного потока обновляются во время обучения, а какие заморожены? - PullRequest
0 голосов
/ 03 ноября 2018

Я полагаю, что во многих сценариях нам нужно заморозить некоторые слои на графике тензорного потока и обеспечить возможность обучения других слоев.

Есть ли способ быстро проверить, обучена ли сеть, как мы ожидали? Например, переменные в замороженном слое фактически не обновляются во время обучения.

Я использую следующий метод, чтобы заморозить все переменные в области видимости "ABC":

    with slim.arg_scope(inception.inceptionb_v2_arg_scope()):
        with tf.variable_scope('ABC'):
          _, end_points = getattr(inception, 'inception_v2'(..., is_training = False))
                         ......
    trainables = [v for v in tf.trainable_variables() if 'ABC/' not in v.name]
    optimizer = tf.train.AdamOptimizer().minimize(loss, var_list= trainables)

Каков предлагаемый способ быстрого подтверждения того, что эти переменные действительно не изменены во время тренировки?

1 Ответ

0 голосов
/ 03 ноября 2018

Вы можете просто проверить их после нескольких итераций:

frozen_variables = [v for v in tf.trainable_variables() if 'ABC/' in v.name]
tmp_frozen_variables_np = sess.run(frozen_variables)
# Training Code
assert np.allclose(tmp_frozen_variables_np, sess.run(frozen_variables))

Однако, пока их нет в списке переменных для оптимизатора, все будет в порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...