Nel tutorial tensorflow, vedo entrambi i codici come tf.add(tf.matmul(X, W), b)
e tf.matmul(X, W) + b
, qual è la differenza tra l'utilizzo della funzione matematica tf.add()
, tf.assign()
, etc e gli operatori +
e =
, ecc, in precisione o altri aspetti?In tensorflow qual è la differenza tra tf.add e operator (+)?
risposta
Non c'è differenza di precisione tra a+b
e tf.add(a, b)
. Il primo traduce a.__add__(b)
che viene mappato tf.add
mediante following line in math_ops.py
_OverrideBinaryOperatorHelper(gen_math_ops.add, "add")
L'unica differenza è che il nome nodo nel grafico sottostante è add
anziché Add
. È generalmente possibile confrontare le cose, cercando in rappresentazione grafico sottostante come questo
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())
Si potrebbe anche vedere questa direttamente ispezionando il metodo __add__
. C'è un ulteriore livello di riferimento indiretto, perché è una chiusura, ma è possibile ottenere la funzione sottostante come segue
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__)
e vedrete uscita sotto il che significa che essi chiamano stessa funzione sottostante
tensorflow.python.ops.gen_math_ops.add
tensorflow.python.ops.gen_math_ops.add
È può vedere dalla tf.Tensor.OVERLOADABLE_OPERATORS
che seguenti metodi speciali Python sono potenzialmente sovraccaricati da opportuni versioni 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__'}
Quelli meto ds sono descritti in Python reference 3.3.7: emulazione di tipi numerici. Si noti che il modello di dati Python non fornisce un modo per l'operatore di assegnazione del sovraccarico =
, quindi l'assegnazione utilizza sempre l'implementazione nativa di Python.
- 1. In TensorFlow, qual è la differenza tra Session.run() e Tensor.eval()?
- 2. Qual è la differenza tra string :: at e string :: operator []?
- 3. TensorFlow: qual è la differenza tra sparse_softmax_cross_entropy_with_logits e softmax_cross_entropy_with_logits?
- 4. Qual è la differenza tra tf.sub e solo meno un'operazione in tensorflow?
- 5. Differenza tra variable_scope e name_scope in TensorFlow
- 6. Qual è la differenza tra più clausole where e && operator in LINQ-to-SQL?
- 7. Qual è la differenza tra il metodo + operator e concat() in JavaScript
- 8. Qual è la differenza tra = e: =
- 9. Qual è la differenza tra `##` e `hashCode`?
- 10. Qual è la differenza tra dict() e {}?
- 11. qual è la differenza tra:.! e: r !?
- 12. Qual è la differenza tra Verilog! e ~?
- 13. Qual è la differenza tra ("") e (null)
- 14. tensorflow: differenza tra multi GPU e tensorflow distribuito
- 15. Qual è la differenza tra? : e ||
- 16. qual è la differenza tra [[], []] e [[]] * 2
- 17. Qual è la differenza tra $ e $$?
- 18. Qual è la differenza tra " " e ""?
- 19. Qual è la differenza tra {0} e ""?
- 20. Qual è la differenza tra {0} e +?
- 21. Qual è la differenza tra .ToString() e + ""
- 22. Qual è la differenza tra l'estrazione tramite $ e @ in R?
- 23. Qual è la differenza tra "in fp" e "in fp.readlines()"?
- 24. Qual è la differenza tra Metodi e Attributi in Ruby?
- 25. qual è la differenza tra @ id/e @ + id/in android?
- 26. Qual è la differenza tra 'e "in? JavaScript
- 27. Qual è la differenza tra booleano e booleano in Java?
- 28. Qual è la differenza tra target e currenttarget in flex?
- 29. In .NET, qual è la differenza tra AsFoo() e ToFoo()?
- 30. Qual è la differenza tra reindirizzamento e inoltro in Symfony?
Quindi perché questi metodi tensorflow sono definiti? – Hossein