循环的可变长度 - tensorflow

时间:2016-03-13 15:37:29

标签: python loops for-loop dynamic tensorflow

我想在张量流中使用动态输入进行循环。

我知道下面的代码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})

1 个答案:

答案 0 :(得分:1)

TensorFlow中的动态循环仍然很年轻,但它们存在。看看折叠运算符及其实现的示例。 https://www.tensorflow.org/versions/master/api_docs/python/control_flow_ops.html#foldl