首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在tf.data.Dataset上迭代

不能在tf.data.Dataset上迭代
EN

Stack Overflow用户
提问于 2018-10-22 09:06:44
回答 1查看 836关注 0票数 2

我正在使用tensorflow的tensorflow.data.Dataset api。但是,我需要动态地创建数据集,过滤掉其他数据集的元素。虽然培训进行得很好,而且我可以迭代训练集和dev集,但是当我用刚才使用过滤器创建的新数据集重新初始化迭代器时,我会收到以下异常:

代码语言:javascript
复制
tensorflow.python.framework.errors_impl.NotFoundError: Function tf_predicate_5HKZIzWZBv8 is not defined.

我使用以下函数从dataset中创建一个初始值:

代码语言:javascript
复制
self.iterator.make_initializer(dataset)

其中self.iterator的定义如下:

代码语言:javascript
复制
self.iterator = tf.data.Iterator.from_structure(ds_types, ds_shapes)

你们知道为什么会这样吗?请注意,如果在创建会话后调用make_initializer,运行dataset,然后创建新的初始化程序,则会发生这种情况。如果在创建之后,我也重新创建了会话,一切都可以工作(除了所有变量都必须重新初始化这一事实)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-22 14:11:16

我找到了解决方案,我和大家分享,以防有人遇到这个问题。问题是,当我在会话初始化后定义一个新数据集时,它没有我为新数据集添加的新操作(在本例中,我每次创建新数据集时都使用一个新筛选器),这就是会话找不到操作的原因。为了克服这个问题,我定义了在会话初始化之前需要使用的所有数据集,并且我使用了一个过滤器,该过滤器以占位符作为输入,因此我总是使用每次迭代器init时以正确的值为输入的相同的过滤器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52925767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档