tensorflow - get_variable - tf variable get value



В тензорном потоке какая разница между tf.add и operator(+)? (1)

Нет никакой разницы в точности между a+b и tf.add(a, b) . Первый переводит на a.__add__(b) который отображается на tf.add с помощью следующей строки в math_ops.py

_OverrideBinaryOperatorHelper(gen_math_ops.add, "add")

Единственное различие заключается в том, что имя узла в базовом графе add вместо Add . Вы можете вообще сравнить вещи, посмотрев на базовое представление Graph, подобное этому

tf.reset_default_graph()
dtype = tf.int32
a = tf.placeholder(dtype)
b = tf.placeholder(dtype)
c = a+b
print(tf.get_default_graph().as_graph_def())

Вы также можете увидеть это непосредственно, __add__ метод __add__ . Существует дополнительный уровень косвенности, потому что это закрытие, но вы можете получить базовую функцию следующим образом

real_function = tf.Tensor.__add__.im_func.func_closure[0].cell_contents
print(real_function.__module__ + "." + real_function.__name__)
print(tf.add.__module__ + "." + tf.add.__name__)

И вы увидите вывод ниже, что означает, что они называют одну и ту же базовую функцию

tensorflow.python.ops.gen_math_ops.add
tensorflow.python.ops.gen_math_ops.add

Вы можете видеть из tf.Tensor.OVERLOADABLE_OPERATORS что следующие специальные методы Python потенциально перегружены соответствующими версиями TensorFlow

{'__abs__',
 '__add__',
 '__and__',
 '__div__',
 '__floordiv__',
 '__ge__',
 '__getitem__',
 '__gt__',
 '__invert__',
 '__le__',
 '__lt__',
 '__mod__',
 '__mul__',
 '__neg__',
 '__or__',
 '__pow__',
 '__radd__',
 '__rand__',
 '__rdiv__',
 '__rfloordiv__',
 '__rmod__',
 '__rmul__',
 '__ror__',
 '__rpow__',
 '__rsub__',
 '__rtruediv__',
 '__rxor__',
 '__sub__',
 '__truediv__',
 '__xor__'}

Эти методы описаны в Python-ссылке 3.3.7 : эмуляция числовых типов. Обратите внимание, что модель данных Python не предоставляет способ перегрузить оператор присваивания = поэтому присваивание всегда использует встроенную реализацию Python.

В обучающих программах tensorflow я вижу оба таких кода, как tf.add(tf.matmul(X, W), b) и tf.matmul(X, W) + b , в чем разница между использованием математической функции tf.add() , tf.assign() и т. д., а операторы + и = и т. д. - в точности или в других аспектах?





tensorflow