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