2016-06-18 17 views

risposta

32

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

Quindi perché questi metodi tensorflow sono definiti? – Hossein

Problemi correlati