Невозможно перебрать tf.data.Dataset - PullRequest
0 голосов
/ 22 октября 2018

Я использую API tenorsflow.data.Dataset от tenorflow.Однако мне нужно на лету создавать наборы данных, отфильтровывая элементы других наборов данных.В то время как обучение проходит хорошо, и я могу выполнять итерацию по обучающему набору и набору разработчика, когда я повторно инициализирую итератор с новым набором данных, который я только что создал с помощью фильтра, я получаю следующее исключение:

tensorflow.python.framework.errors_impl.NotFoundError: Function tf_predicate_5HKZIzWZBv8 is not defined.

IЯ использую следующую функцию для создания инициализатора из набора данных:

self.iterator.make_initializer(dataset)

, где self.iterator определен следующим образом:

self.iterator = tf.data.Iterator.from_structure(ds_types, ds_shapes)

У вас, ребята, есть идея, почемуэто происходит?Обратите внимание, что это происходит, если я вызываю make_initializer после создания сеанса, запускаю набор данных и затем создаю новый инициализатор.Если после создания я также воссоздаю сеанс, все работает (за исключением того факта, что все переменные должны быть повторно инициализированы)

1 Ответ

0 голосов
/ 22 октября 2018

Я нашел решение и делюсь информацией на случай, если кто-нибудь столкнется с этой проблемой.Дело в том, что, поскольку я определяю новый набор данных после инициализации сеанса, в нем нет новой операции, которую я добавляю для нового набора данных (в этом случае я использую новый фильтр каждый раз, когдасоздать новый набор данных), и именно поэтому сеанс не может найти операцию.Чтобы преодолеть эту проблему, я определил все наборы данных, которые мне нужно было использовать до инициализации сеанса, и я использовал фильтр, который принимает в качестве входных данных заполнитель, так что я всегда использую один и тот же фильтр, отправляемый каждый раз во время инициализации итератора, с правильным значением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...