При использовании tf.data.TFRecordDataset в качестве входного конвейера, как вызвать sess.run () или eval () более одного раза в одном раунде итерации? - PullRequest
0 голосов
/ 19 декабря 2018

С tensorflow я сделал dataset = tf.data.TFRecordDataset(filename) и iterator = dataset.make_one_shot_iterator().Затем в каждом раунде iterator.get_next() выдавал бы мини-пакет данных в качестве входных данных.

Я тренирую сеть со слоем Dropout, поэтому я должен написать что-то вроде этого:

sess.run(train_op,feed_dict={keep_prob:0.5})
accuracy,loss = sess.run([acc,loss],feed_dict={keep_prob:1.0})

, в котором keep_prob представляет собой вероятность сохранить нейрон живым, который отличается в процессе обучения и тестирования (в этом месте находится процесс оценки).

Проблема возникает здесь каждый sess.run() запускает iterator.get_next(), чтобы получить новый пакет ввода.Это не то, что должно было быть.

Что мне делать, если я хочу, чтобы эти два sess.run() имели одинаковые входные тензоры?

Большое спасибо: -)

1 Ответ

0 голосов
/ 25 декабря 2018

С Рождеством!

Большое спасибо за подарок Санты :-)

Я только что был направлен на это место , где вы могли бы найти ответ на этот вопрос.question.

Основная идея состоит в том, чтобы использовать tf.data.Iterator.from_structure() вместо tf.data.Dataset.make_initializable_iterator() для создания итератора и для инициализации итератора для обучающего, проверочного и тестового набора данных отдельно.

С Рождеством иС новым годом!

...