如何在张量流中将张量列表作为输入传递给图形?

时间:2016-04-27 21:30:53

标签: tensorflow

我使用tf.placeholder()形状[None, None, 10]将输入传递给张量。现在我想迭代输入的第一个维度,并将一些函数应用于该维度中的每个切片。但是,当我尝试使用Python for循环执行此操作时,我收到一条错误消息,指出Tensor个对象“不可迭代”。

有什么方法可以将输入作为形状[None, 10]的张量列表传递,我怎样才能将此列表分配给占位符?或者是否有其他方法来迭代Tensor的维度?

2 个答案:

答案 0 :(得分:2)

可以使用新的tf.map_fn()tf.foldl() tf.foldr()或(最常见的)tf.scan()高阶运算符,这些运算符已添加到版本0.8中的TensorFlow中。您将使用的特定运算符取决于您要执行的计算。例如,如果要在张量的每一行上执行相同的功能并将元素打包回单个张量,则可以使用tf.map_fn()

p = tf.placeholder(tf.float32, shape=[None, None, 100])

def f(x):
    # x will be a tensor of shape [None, 100].
    return tf.reduce_sum(x)

# Compute the sum of each [None, 100]-sized row of `p`.
# N.B. You can do this directly using tf.reduce_sum(), but this is intended as 
# a simple example.
result = tf.map_fn(f, p)

答案 1 :(得分:0)

您应该将输入作为单个张量x的形状[无,无,10]传递,然后使用tf.split(0, -1, x)获取可以迭代的张量列表。