我想显示张量的值。
这是我的代码:
#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.
如何解决问题?
非常感谢您。
答案 0 :(得分:1)
看起来您有一个尚未初始化的数据集迭代器。数据集迭代器不是变量,因此不会使用tf.global_variables_intializer()
进行初始化。
您必须通过在创建的任何数据集迭代器上调用sess.run(iterator.initializer)
来显式初始化它(例如,使用iterator = dataset.make_initializable_iterator()
。
此外,请注意,即使只关心元素的子集,每次迭代(运行GetNext
节点)也会产生数据集的完整元素。如果data_dict
是迭代的输出(由data_dict = iterator.get_next()
创建),则在仅给您字典中k,v对之一的情况下,进行print(sess.run(i[1]))
,实际上会产生整个{{ 1}}。我希望除非您在for循环中重新初始化迭代器,否则该管道不会为您提供期望的输出。
为了使我所说的更为具体,如果您创建了一个如下所示的数据集,那么您将期望获得以下迭代输出:
data_dict
答案 1 :(得分:0)
在先前的代码中是否使用了任何迭代器?如果是这样,也将它们初始化。
例如。 sess.run(validation_iterator.initializer)