tensorflow tf中的For循环,函数返回Tensor(“while/Placeholder:0”,形状=(),dtype= int 32)

5jvtdoz2  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(253)

我想在tf.函数中的Tensor上使用for循环,如下所示:

@tf.function
def test(x):
    for i in range(tf.shape(x)[0]):
        print(i)

我定义:

S = tf.random.uniform([2,2],0,1)

然后

test(S)

给予

Tensor("while/Placeholder:0", shape=(), dtype=int32)

for i in range(tf.shape(S)[0]):
    print(i)

返回

0
1

为什么我不能在tf.函数的Tensor长度上循环?

1aaf6o9v

1aaf6o9v1#

使用tf.print

import tensorflow as tf

@tf.function
def test(x):
    for i in range(tf.shape(x)[0]):
        tf.print(i)

S = tf.random.uniform([2,2],0,1)
test(S)
# 0
# 1

请在这里检查在tf.function中使用python操作的副作用。

相关问题