TensorFlow:用递归定义的元素构造张量?

时间:2017-02-24 03:39:24

标签: python tensorflow

我想做点什么:

x = tf.Variable(tf.ones([100], dtype=tf.float32))
x0 = tf.Variable(tf.ones([1], dtype=tf.float32))
def f(x):
    return tf.sin(x)
x[0] = x0
for i in range(1,100):
    x[i+1] = f(x[i])

构建张量' x。这种结构有可能吗?我看着' tf.while_loop'但似乎没有帮助。

2 个答案:

答案 0 :(得分:0)

def f(x):
    return tf.sin(x)
x = []
x.append(tf.constant(1.0))
for i in range(1,100):
    x.append(f(i))
这是你想要的吗? 顺便说一句,这不是递归的。它是迭代的。

答案 1 :(得分:0)

TypeError: 'Tensor' object does not support item assignment in TensorFlow中的解决方案几乎解决了Atirag指出的问题,但是' tf.pack()'好像已被弃用了。为了完整起见,这是针对已发布问题的最新解决方案:

x0 = tf.Variable(tf.ones(1, dtype=tf.float32))
def f(x):
    return tf.sin(x)
x = [x0]
for i in range(1, 100):
    x.append(f(x[i - 1]))

tf.stack(x)