当i
的值是3的倍数时,以下代码将不会产生“模糊”:
@tf.function
def fizzbuzz(n):
msg = tf.constant('')
for i in tf.range(n):
if int(i % 3) == 0:
msg += 'Fizz'
elif tf.equal(i % 5, 0):
msg += 'Buzz'
else:
msg += tf.as_string(i)
msg += '\n'
return msg
print(fizzbuzz(tf.constant(15)).numpy().decode())
但是如果将@tf.function
装饰器注释掉,它通常可以以3的倍数运行。
答案 0 :(得分:0)
以下修复程序对我有用:使用tf.mod
和tf.equal
的组合,而不是%
和==
。
几天前我遇到了这个问题,我不确定这是错误还是期望的行为。
@tf.function
def fizzbuzz(n):
msg = tf.constant('')
for i in tf.range(n):
if tf.equal(tf.mod(i, 3), 0):
msg += 'Fizz'
elif tf.equal(i % 5, 0):
msg += 'Buzz'
else:
msg += tf.as_string(i)
msg += '\n'
return msg
print(fizzbuzz(tf.constant(15)).numpy().decode())
# Output
#Fizz
#1
#2
#Fizz
#4
#Buzz
#Fizz
#7
#8
#Fizz
#Buzz
#11
#Fizz
#13
#14