Учитывая, что можно запустить tf.Data.Datasets
в режиме активного выполнения, как мне открыть файл TFRecord в режиме активного выполнения? Меня больше беспокоит написание синтаксического анализатора, потому что в настоящее время я использую dataset.make_one_shot_iterator
в качестве итератора (между несколькими изображениями в моем контейнере).
Разбор TFRecord при активном выполнении
Ответы (1)
В TensorFlow 1.8 и выше вы можете естественным образом выполнять итерацию по объекту tf.data.Dataset
с включенным жадным выполнением.
ds = tf.data.TFRecordDataset(...).map(...).batch(...)
for x in ds:
print(x)
make_one_shot_iterator
также будет работать (продолжает работать, чтобы поддерживать совместимость с эквивалентным кодом для построения графа):
ds = tf.data.TFRecordDataset(...).map(...).batch(...)
itr = ds.make_one_shot_iterator()
for x in itr:
print(x)
Однако в более старых версиях TensorFlow (где активное выполнение является недавно представленной функцией и, следовательно, менее испеченной), вам придется обернуть свой набор данных в tf.contrib.eager.Iterator
, используя что-то вроде:
tfe tf.contrib.eager
ds = tf.data.TFRecordDataset(...).map(...).batch(...)
for x in tfe.Iterator(ds):
print(x)
См. эти ресурсы, связанные с выпуском 1.7: - Блокнот – пример RNN
Надеюсь, это поможет.
person
ash
schedule
01.05.2018
tf.data.TFRecordDataset
, это будет работать так же хорошо, если включено активное выполнение. Возможно, вы можете обновить вопрос, указав более подробную информацию о том, что вы пытаетесь сделать? - person ash   schedule 01.05.2018RuntimeError: dataset.make_one_shot_iterator is not supported when eager execution is enabled.
. Это происходит независимо от выбранного метода итератора. - person Ricardo Barros Lourenço   schedule 01.05.2018