в TensorFlow? Что будет отличаться в вашем графике вычислений при построении графика с + вместо tf.add()?
В более общем плане, + или другие операции, перегруженные для тензоров?
Ответ 1
Если хотя бы один из 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__ (двоичный !=).