Я тренирую модель на 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?