Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.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 TensorFlow FailedPremissionError:迭代器尚未初始化_Python_Tensorflow - Fatal编程技术网

Python TensorFlow FailedPremissionError:迭代器尚未初始化

Python TensorFlow FailedPremissionError:迭代器尚未初始化,python,tensorflow,Python,Tensorflow,我想显示张量的值 这是我的密码: #some code here data = [data_tensor for data_tensor in data_dict.items()] for i in data: with tf.Session() as sess: sess.run(tf.global_variables_initializer()) print (sess.run(i[1])) print('_'*100) 但是,我得到

我想显示张量的值

这是我的密码:

#some code here
data = [data_tensor for data_tensor in data_dict.items()]
for i in data:
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        print (sess.run(i[1]))
        print('_'*100)
但是,我得到了一个错误:

FailedPreconditionError (see above for traceback): 
GetNext() failed because the iterator has not been initialized. 
Ensure that you have run the initializer operation for this iterator 
before getting the next element.
如何解决这个问题


非常感谢。

您在以前的代码中使用过迭代器吗?如果是,也要初始化它们


例如,
sess.run(validation\u iterator.initializer)

看起来您的数据集迭代器尚未初始化。数据集迭代器不是变量,因此不会使用
tf.global\u variables\u initializer()
进行初始化

您必须通过调用
sess.run(iterator.initializer)
对您创建的任何数据集迭代器进行显式初始化(例如,使用
iterator=dataset.make_initializable_iterator()


此外,请注意,每次数据集迭代(运行
GetNext
节点)都会生成数据集的完整元素,即使您只关心元素的子集。如果
data\u dict
是迭代的输出(使用
data\u dict=iterator.get\u next()
创建),则执行
打印(sess.run(i[1])
,虽然只给你字典中的k,v对中的一对,但实际上产生了整个
数据。我希望这个管道不会给你你期望的输出,除非你在for循环中重新初始化迭代器

为了使我所说的更加具体,如果您有一个如下创建的数据集,您将期望以下迭代输出:

## dataset: [{'a':0, 'b':10}, {'a':1, 'b':11}, {'a':2, 'b':12}, ...]
dataset = tf.data.Dataset.range(10).map(lambda x: {'a': x, 'b': x + 10})
iterator = dataset.make_initializable_iterator()
next_elem = iterator.get_next()
with tf.Session() as sess:
    sess.run(iterator.initializer)
    print(sess.run(next_elem['a']))  # 0
    print(sess.run(next_elem['a']))  # 1
    print(sess.run(next_elem['b']))  # 12

首先尝试创建会话,然后设置数据并在其中循环。无需在循环的每次迭代中创建新会话。发布调用GetNext()函数的整个代码段。您似乎缺少类似
sess.run(iterator.initializer)的内容
用于您的数据集迭代器。我收到错误
AttributeError:“Variable”对象没有属性“make_InitializableTerator”
。抱歉,键入:s/make_InitializableTerator/make_InitializableTerator