В чем разница между
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__ (двоичный !=).