Python 循环张量流的可变长度

Python 循环张量流的可变长度,python,loops,for-loop,dynamic,tensorflow,Python,Loops,For Loop,Dynamic,Tensorflow,我想用tensorflow中的动态输入来做循环 我知道对于下面的代码reduce\u sum就足够了,但我希望能够以下面描述的方式来制定代码。假设我有一个大小不同的数组,我想遍历这个数组 如何遍历动态长度数组 问题: TypeError:需要range()整数结束参数,得到张量 如何评估会话之外的get_sum sum=get_sum(x,xshape)不应该在会话内的for循环中 例如: import tensorflow as tf import numpy as np x = tf.p

我想用tensorflow中的动态输入来做循环

我知道对于下面的代码
reduce\u sum
就足够了,但我希望能够以下面描述的方式来制定代码。假设我有一个大小不同的数组,我想遍历这个数组

如何遍历动态长度数组

问题:

TypeError:需要range()整数结束参数,得到张量

如何评估会话之外的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})

动态循环在TensorFlow中仍然很年轻,但它们确实存在。以fold操作符及其实现为例。

如果迭代次数提前未知,那么另一种循环不是更合适吗?什么样的循环?可能是
循环。这是同样的问题,你不能得到整数的形状;如何使用while循环?-问题是将形状转换为整数,我们需要对其进行评估;问题是怎么做?所以你的问题与循环无关,而是如何得到某个整数:明白了。现在的情况是什么?感谢动态循环现在得到了很好的支持,并且有许多更高级别的操作符使它们更容易使用。您可以这样做,例如,
elems=[1,2,3,4,5,6];sum=tf.foldl(lambda,x:a+x,elems)
,查看tf.foldl和tf.scan API文档。