Прямой проход Tensorflow с отсевом

Я пытаюсь использовать отсев, чтобы получить оценки ошибок для нейронной сети. Это включает в себя выполнение нескольких прямых проходов моей сети не только во время обучения, но и во время тестирования с активированным отсевом. Слои Dropout активируются только во время обучения, но не во время тестирования. Можно ли это сделать в Tensorflow, просто вызвав некоторые функции или изменив некоторые параметры?


person Xiangyi Yan    schedule 06.02.2018    source источник


Ответы (1)


Да, проще всего использовать tf.layers.dropout с аргументом training. , который может быть тензором, который вы можете определить с помощью true или false в любом конкретном сеансе:

mode = tf.placeholder(tf.string, name='mode')
training = tf.equal(mode, 'train')

...

layer = tf.layers.dropout(layer, rate=0.5, training=training)

...

with tf.Session() as sess:
  sess.run(..., feed_dict={mode: 'train'})  # This turns on the dropout

  sess.run(..., feed_dict={mode: 'test'})   # This turns off the dropout
person Maxim    schedule 06.02.2018