有什么区别
tf.add(x, y)
and
x + y
在 TensorFlow 中?当您使用以下命令构建图表时,您的计算图表会有什么不同+
代替tf.add()
?
更一般地说,有+
或者其他张量超载的操作?
如果至少有一个x
or y
is a tf.Tensor https://www.tensorflow.org/versions/0.6.0/api_docs/python/framework.html#Tensor对象、表达式tf.add(x, y)
and x + y
是等价的。您可能使用的主要原因tf.add()
是指定一个显式的name https://www.tensorflow.org/versions/0.6.0/api_docs/python/math_ops.html#add创建的操作的关键字参数,这对于重载运算符版本是不可能的。
请注意,如果两者都不是x
nor y
is a tf.Tensor
- 例如,如果它们是 NumPy 数组 - 那么x + y
不会创建 TensorFlow 操作。tf.add()
总是创建一个 TensorFlow 操作并将其参数转换为tf.Tensor
对象。因此,如果您正在编写一个可能同时接受张量和 NumPy 数组的库函数,您可能更喜欢使用tf.add()
.
TensorFlow Python API 中重载了以下运算符:
-
__neg__
(unary -
)
-
__abs__
(abs()
)
-
__invert__
(unary ~
)
-
__add__
(二进制+
)
-
__sub__
(二进制-
)
-
__mul__
(二进制元素*
)
-
__div__
(二进制/
在Python中2)
-
__floordiv__
(二进制//
在Python 3)
-
__truediv__
(二进制/
在Python 3)
-
__mod__
(二进制%
)
-
__pow__
(二进制**
)
-
__and__
(二进制&
)
-
__or__
(二进制|
)
-
__xor__
(二进制^
)
-
__lt__
(二进制<
)
-
__le__
(二进制<=
)
-
__gt__
(二进制>
)
-
__ge__
(二进制>=
)
请注意,__eq__
(二进制==
) is not超载。x == y
将简单地返回一个Python布尔值是否x
and y
引用相同的张量。你需要使用tf.equal() https://www.tensorflow.org/api_docs/python/tf/equal明确地检查元素之间的相等性。不等于也一样,__ne__
(二进制!=
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)