我想在张量流中使用动态输入进行循环。
我知道下面的代码reduce_sum
就足够了,但我希望能够以下面描述的方式制定代码。因为我有一个不同大小的数组,我想遍历那个数组。
如何遍历动态长度数组?
问题:
TypeError:range()期望整数结束参数,得到Tensor
如何评估会话之外的get_sum?
sum = get_sum(x, xshape)
不应位于会话内的for
循环
例如:
import tensorflow as tf
import numpy as np
x = tf.placeholder(tf.float32, shape=[None])
xshape = tf.placeholder(tf.float32, shape=[])
def get_sum(x, xshape):
sum = 0
for i in range(xshape):
sum += x[i]
init = tf.initialize_all_variables()
sum = get_sum(x, xshape)
with tf.Session() as sess:
sess.run(init)
for i in range(100):
length = np.random.randint(0,10)
a = np.random.randint(0, 10, length)
print sess.run(sum,feed_dict={x:a, xshape:length})
答案 0 :(得分:1)
TensorFlow中的动态循环仍然很年轻,但它们存在。看看折叠运算符及其实现的示例。 https://www.tensorflow.org/versions/master/api_docs/python/control_flow_ops.html#foldl