在Google的翻译模型文件--seq2seq.py中,他们使用'enumerate'枚举第1195行中的张量,如图片所示,为什么当我尝试枚举张量但它显示'TypeError:'Tensor'对象是不可迭代的。“ 我无法找到关于如何在tensorflow的教程中枚举张量的任何线索,任何人都可以帮助我吗?谢谢! 顺便说一下:我的张力是等级4 enter image description here
答案 0 :(得分:0)
您可以对张量进行切片和索引。唯一的区别是您需要运行会话来获取值。 这是一个迭代的例子
foo = tf.constant([1,2,3,4,5,6,7,8,9,0])
sess = tf.Session();
for i in range(10):
print(sess.run(foo[i]))
sess.close()
或者,您可以使用互动会话并直接致电print(foo[i].eval())
或启用急切执行,它就像迭代Python列表一样简单。
tf.enable_eager_execution()
foo = tf.constant([1,2,3])
for i in foo:
print(i) #this prints the tensor including value
打印
tf.Tensor(1,shape =(),dtype = int32)
tf.Tensor(2,shape =(),dtype = int32)
tf.Tensor(3,shape =(),dtype = int32)
在上述所有情况中,您将得到张量不是确切的值
此方法适用于占位符,常量和变量。
唯一的事情:对于变量中的急切模式,您需要使用tf.contrib.eager.Variable
,而不是tf.Variable