Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法在tf.data.Dataset上迭代_Python_Tensorflow_Dataset - Fatal编程技术网

Python 无法在tf.data.Dataset上迭代

Python 无法在tf.data.Dataset上迭代,python,tensorflow,dataset,Python,Tensorflow,Dataset,我正在使用tensorflow的tensorflow.data.Dataset api。但是,我需要动态创建数据集,过滤掉其他数据集的元素。虽然训练进行得很顺利,我可以迭代训练集和开发集,但当我使用刚刚使用过滤器创建的新数据集重新初始化迭代器时,我收到以下异常: tensorflow.python.framework.errors_impl.NotFoundError: Function tf_predicate_5HKZIzWZBv8 is not defined. 我使用以下函数从数据集创

我正在使用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_初始值设定项,运行数据集,然后创建新的初始值设定项,就会发生这种情况。如果在创建之后我也重新创建了会话,那么一切都正常(除了所有变量都必须重新初始化的事实)

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