В чем разница между
tf.add(x, y)
и
x + y
в TensorFlow? Что будет отличаться в вашем графике вычислений при построении графика с +
вместо tf.add()
?
В более общем плане, +
или другие операции, перегруженные для тензоров?
В чем разница между
tf.add(x, y)
и
x + y
в TensorFlow? Что будет отличаться в вашем графике вычислений при построении графика с +
вместо tf.add()
?
В более общем плане, +
или другие операции, перегруженные для тензоров?
Если хотя бы один из x
или y
является объектом tf.Tensor
, выражения tf.add(x, y)
и x + y
эквивалентны. Основная причина, вы можете использовать tf.add()
, чтобы явно указать name
аргумента ключевого слова для созданного цита, что невозможно с перегруженной версией оператора.
Заметим, что если ни x
ни y
не являются tf.Tensor
- например, если они являются массивами NumPy, то x + y
не будет создавать tf.Tensor
. tf.add()
всегда создает оператор TensorFlow и преобразует его аргументы в объекты tf.Tensor
. Поэтому, если вы пишете библиотечную функцию, которая может принимать как тензоры, так и массивы NumPy, вы можете использовать tf.add()
.
Следующие операторы перегружены в API Penson TensorFlow:
__neg__
(унарный -
)__abs__
(abs()
)__invert__
(унарный ~
)__add__
(двоичный +
)__sub__
(двоичный -
)__mul__
(двоичный __mul__
*
)__div__
(двоичный /
в Python 2)__floordiv__
(двоичный //
в Python 3)__truediv__
(двоичный /
в Python 3)__mod__
(двоичный %
)__pow__
(двоичный **
)__and__
(двоичный &
)__or__
(двоичный |
)__xor__
(двоичный ^
)__lt__
(двоичный <
)__le__
(двоичный <=
)__gt__
(двоичный >
)__ge__
(binary >=
) Обратите внимание: __eq__
(binary ==
) не перегружен. x == y
будет просто возвращать логическое значение Python, если x
и y
относятся к одному и тому же тензору. Вы должны явно использовать tf.equal()
для проверки равенства по элементам. То же самое касается не равных, __ne__
(двоичный !=
).