python - 无法迭代 tf.data.Dataset

标签 python tensorflow dataset

我正在使用 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)

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

最佳答案

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

关于python - 无法迭代 tf.data.Dataset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52925767/

相关文章:

java - 需要帮助来为恶意网址的数据集创建mapreduce

python - 在 python 中使用 Prophet 预测每个类别的值

python - Python 3 中解析 XML 模式的 LXML 问题

python - Python 的 os.path.join() 的正确结果

tensorflow - 在 TensorFlow 中使用 session.run([]) 评估损失

java - 如何将输入数据传递给 Java 中现有的 tensorflow 2.x 模型?

tensorflow - 用于 ML 预测的 Celery 任务在执行中挂起

c# - 获取由两个日期时间选择器选择的两天之间的记录,并在 Visual Studio C# 中用它们填充数据 GridView

.net - 在 SSMS 中快,在应用程序中慢 - 为什么这个数据集需要这么长时间才能填充?

python - 如何向 NLTK 中的停用词添加更多语言?