Как восстановить положение (состояние) tf.data.Dataset в TensorFlow 2 - PullRequest
1 голос
/ 05 ноября 2019

Я тренирую модель на tf.data.Dataset . Я пользуюсь машиной без гарантий работоспособности. Когда я получаю перерывы, я хочу иметь возможность возобновить тренировки с того места, где они остановились. В частности, я хочу убедиться, что я использую одинаковую последовательность мини-пакетов независимо от того, получаю ли я прерывания.

В TensorFlow 1.x это можно сделать, создав итератор над набором данных и сохранив /восстановление объекта SaveableObject, возвращаемого tf.data.experimental.make_saveable_from_iterator (iterator) :

В TensorFlow 2.0.0 я не могу заставить эту работу:

import tensorflow as tf
ds = tf.data.Dataset.range(10)
tf.data.experimental.make_saveable_from_iterator(iter(ds))
# ==>
# Traceback (most recent call last):
#   File "dataset.py", line 3, in <module>
#     tf.data.experimental.make_saveable_from_iterator(iter(ds))
#   File "/home/me/.local/lib/python3.5/site-packages/tensorflow_core/python/data/experimental/ops/iterator_ops.py", line 72, in make_saveable_from_iterator
#     return _Saveable(iterator._iterator_resource)  # pylint: disable=protected-access
#   File "/home/me/.local/lib/python3.5/site-packages/tensorflow_core/python/data/experimental/ops/iterator_ops.py", line 82, in __init__
#     iterator_resource.name + "-state")
#   File "/home/me/.local/lib/python3.5/site-packages/tensorflow_core/python/framework/ops.py", line 1090, in name
#     "Tensor.name is meaningless when eager execution is enabled.")
# AttributeError: Tensor.name is meaningless when eager execution is enabled.

Есть ли способ сделать это в TensorFlow 2?

...