neural network examples descargar course tensorflow

examples - tensorflow neural network



En tensorflow, ¿cuál es la diferencia entre tf.add y operator(+)? (1)

No hay diferencia en la precisión entre a+b y tf.add(a, b) . El primero se traduce en a.__add__(b) que se asigna a tf.add mediante la siguiente línea en math_ops.py

_OverrideBinaryOperatorHelper(gen_math_ops.add, "add")

La única diferencia es que el nombre de nodo en el Gráfico subyacente es add lugar de Add . En general, puede comparar cosas mirando la representación gráfica subyacente como esta

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())

También puede ver esto directamente inspeccionando el método __add__ . Hay un nivel adicional de indirección porque es un cierre, pero puede obtener la función subyacente de la siguiente manera

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__)

Y verás el resultado a continuación, lo que significa que llaman a la misma función subyacente

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

Puede ver desde tf.Tensor.OVERLOADABLE_OPERATORS que los siguientes métodos especiales de Python están potencialmente sobrecargados por las versiones apropiadas de 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__''}

Esos métodos se describen en Python reference 3.3.7 : emulación de tipos numéricos. Tenga en cuenta que el modelo de datos de Python no proporciona una forma de sobrecargar el operador de asignación = por lo que la asignación siempre usa la implementación nativa de Python.

En los tutoriales de flujo tensor, veo los dos códigos como tf.add(tf.matmul(X, W), b) y tf.matmul(X, W) + b , ¿cuál es la diferencia entre utilizar la función matemática tf.add() , tf.assign() , etc. y los operadores + y = , etc., en precisión u otros aspectos?