【问题标题】:Cannot iterate over tf.data.Dataset无法迭代 tf.data.Dataset
【发布时间】:2019-03-26 07:37:00
【问题描述】:

我正在使用 tensorflow 的 tensorflow.data.Dataset api。但是,我需要动态创建数据集,过滤掉其他数据集的元素。虽然训练进展顺利并且我可以迭代训练集和开发集,但当我使用刚刚使用过滤器创建的新数据集重新初始化迭代器时,我收到以下异常:

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

我正在使用以下函数从数据集创建初始化程序:

self.iterator.make_initializer(dataset)

其中 self.iterator 定义如下:

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

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

【问题讨论】:

    标签: python tensorflow dataset


    【解决方案1】:

    我找到了解决方案,我正在分享,以防有人遇到这个问题。问题是,当我在会话初始化后定义一个新数据集时,它没有我为新数据集添加的新操作(在这种情况下,我每次都使用新过滤器创建一个新数据集),这就是会话找不到操作的原因。为了克服这个问题,我在会话初始化之前定义了我需要使用的所有数据集,并使用了一个过滤器,该过滤器将占位符作为输入,以便我始终使用每次在迭代器初始化时提供的具有正确值的相同过滤器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-15
      • 2019-10-17
      • 2016-08-23
      • 1970-01-01
      • 2011-11-10
      • 2018-07-18
      • 1970-01-01
      相关资源
      最近更新 更多