2016-01-29 7 views
18

Qual è la differenza tratensorflow l'overloading degli operatori

tf.add(x, y) 

e

x + y 

in tensorflow? Quale sarebbe diverso nel grafico di calcolo quando costruisci il grafico con + anziché tf.add()?

Più in generale, sono + o altre operazioni sovraccaricate per i tensori?

risposta

40

Se almeno una delle x o y è un oggetto tf.Tensor, le espressioni tf.add(x, y) e x + y sono equivalenti. Il motivo principale per cui è possibile utilizzare tf.add() consiste nel specificare un argomento parola chiave esplicito name per l'operazione creata, che non è possibile con la versione dell'operatore sovraccarico.

noti che se né xy è un tf.Tensor — ad esempio se sono matrici NumPy — poi x + y non creerà un op tensorflow. tf.add() crea sempre un TensorFlow op e converte i suoi argomenti in oggetti tf.Tensor. Pertanto, se stai scrivendo una funzione di libreria che potrebbe accettare sia tensori che array NumPy, potresti preferire usare tf.add().

i seguenti operatori è sovraccarica nella API tensorflow Python:

  • __neg__ (unario -)
  • __abs__ (abs())
  • __invert__ (unario ~)
  • __add__ (binario +)
  • __sub__ (binario -)
  • __mul__ (elementwise binario *)
  • __div__ (binario / in Python 2)
  • __floordiv__ (binario // in Python 3)
  • __truediv__ (binario / in Python 3)
  • __mod__ (binario %)
  • __pow__ (binario **)
  • __and__ (binario &)
  • __or__ (binario |)
  • __xor__ (binario ^)
  • __lt__ (binario <)
  • __le__ (binario <=)
  • __gt__ (binario >)
  • (binario >=)
+0

e se si desidera l'operatore '==' su confronto scalare tensore? –