TensorFlow运算符重载
machine-learning
python
tensorflow
5
0

之间有什么区别

   tf.add(x, y)

   x + y

在TensorFlow中?使用+而不是tf.add()构造图形时,计算图形中会有什么不同?

更普遍地说,张量是否+或其他运算过载?

参考资料:
Stack Overflow
收藏
评论
共 1 个回答
高赞 时间 活跃

如果xy中的至少一个是tf.Tensor对象,则表达式tf.add(x, y)x + y是等效的。您可能使用tf.add()主要原因是为创建的op指定一个显式的name关键字参数,这对于重载的运算符版本是不可能的。

请注意,如果xy都不是tf.Tensor例如,如果它们是NumPy数组),则x + y将不会创建TensorFlow op。 tf.add()始终创建一个TensorFlow op,并将其参数转换为tf.Tensor对象。因此,如果编写的库函数可以同时接受张量和NumPy数组,则可能更喜欢使用tf.add()

TensorFlow Python API中的以下运算符已重载:

  • __neg__ (一元-
  • __abs__abs()
  • __invert__ (一元~
  • __add__ (二进制+
  • __sub__ (二进制-
  • __mul__ (二进制元素*
  • __div__ (二进制/在Python 2中)
  • __floordiv__ (二进制//在Python 3中)
  • __truediv__ (二进制/在Python 3中)
  • __mod__ (二进制%
  • __pow__ (二进制**
  • __and__ & __and__ (二进制&
  • __or__ (二进制|
  • __xor__ (二进制^
  • __lt__ (二进制<
  • __le__ (二进制<=
  • __gt__ (二进制>
  • __ge__ (二进制>=

请注意, __eq__ (binary ==没有过载。 x == y会简单地返回一个Python布尔值,而xy引用相同的张量。您需要显式使用tf.equal()来检查元素方式的相等性。不等于__ne__ (二进制!= )也是如此。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号