如何以张量作为范围运行循环?(在tensorflow中)

Poo*_*Pzm 16 python neural-network deep-learning tensorflow

我想要一个for循环,它的迭代次数取决于张量值.例如:

for i in tf.range(input_placeholder[1,1]):
  # do something
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

"TypeError:'Tensor'对象不可迭代"

我该怎么办?

pat*_*_ai 23

为此,您需要使用tensorflow while loop(tf.while_loop),如下所示:

i = tf.constant(0)
while_condition = lambda i: tf.less(i, input_placeholder[1, 1])
def body(i):
    # do something here which you want to do in your loop
    # increment i
    return [tf.add(i, 1)]

# do the loop:
r = tf.while_loop(while_condition, body, [i])
Run Code Online (Sandbox Code Playgroud)


kev*_*man -8

TensorFlow Python API函数的返回值类型,tf.range包括Tensor. ATensor是图中节点的符号句柄,表示计算。eval您可以通过调用a 的方法Tensor或将对象传递给runa 的方法来执行实际计算Session。就您而言,也许您想做的只是简单地迭代numpys range

for in in np.range(...):
  # do something
Run Code Online (Sandbox Code Playgroud)

  • 当您编写张量流操作时,进行 numpy 调用会阻止操作在 GPU 上运行,因此操作中仅包含与 GPU 兼容的张量流操作非常重要。 (6认同)