如何枚举张量流中的张量?

时间:2018-05-19 08:25:05

标签: python tensorflow enumerate

在Google的翻译模型文件--seq2seq.py中,他们使用'enumerate'枚举第1195行中的张量,如图片所示,为什么当我尝试枚举张量但它显示'TypeError:'Tensor'对象是不可迭代的。“ 我无法找到关于如何在tensorflow的教程中枚举张量的任何线索,任何人都可以帮助我吗?谢谢! 顺便说一下:我的张力是等级4 enter image description here

1 个答案:

答案 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