为什么我们需要tf.convert_to_tensor?

时间:2019-11-17 05:55:43

标签: tensorflow

我在(https://www.tensorflow.org/guide/eager)中看到了以下代码:

def fizzbuzz(max_num):
  counter = tf.constant(0)
  max_num = tf.convert_to_tensor(max_num)
  for num in range(1, max_num.numpy()+1):
    num = tf.constant(num)
    if int(num % 3) == 0 and int(num % 5) == 0:
      print('FizzBuzz')
    elif int(num % 3) == 0:
      print('Fizz')
    elif int(num % 5) == 0:
      print('Buzz')
    else:
      print(num.numpy())
    counter += 1


fizzbuzz(15)

为什么max_num需要转换张量?

1 个答案:

答案 0 :(得分:2)

在此示例中,它仅用于简单的演示目的(即,显示Eager的工作方式)-否则,这是多余的。如果问题是“为什么急于使用张量?” -- TensorFlow操作只能在张量实例上运行(例如TensorEagerTensor)-即使在急切执行中也是如此。渴望实际上并不是没有图-它是主要是图,“已执行图”。

至于“为什么”-长问题,而短答案是“优化”;在实际执行之前,TensorFlow会智能地组织输入并进行类型转换-这样做需要输入具有某些属性和方法,这些属性和方法在将其转换为张量后会继承。使用高级操作时,这是自动完成的,但是如果编写自定义功能(例如优化程序),则可能需要手动进行转换。