In numpy, con due array della stessa forma, x
e , è possibile eseguire sezioni come questa y[x > 1]
. Come si ottiene lo stesso risultato in tensorflow? y[tf.greater(x, 1)]
non funziona e tf.slice
non supporta nulla di simile. C'è un modo per indicizzare con un tensore booleano in questo momento o è attualmente non supportato?Indicizzazione tensorflow con tensore booleano
risposta
Questo non è implementata in questo momento, ecco GitHub problema seguire i progressi - https://github.com/tensorflow/tensorflow/issues/206
ora essere monitorati in: https://github.com/tensorflow/tensorflow/issues/4639 –
Non direi che non è completamente implementata. Com'è per un doppio negativo?
Tensorflow supporta in realtà un numero elevato di sezioni e tagli, anche se la sintassi potrebbe essere leggermente meno carina. Ad esempio, se si desidera creare un nuovo array uguale a y
quando x>1
ma uguale a 0 altrimenti, si può assolutamente farlo. Controlla comparison operators ad es.
masked = tf.greater(x,1)
zeros = tf.zeros_like(x)
new_tensor = tf.where(masked, y, zeros)
Se, d'altra parte, si vuole fare un nuovo array che contiene solo i ragazzi dove x>1
si possono fare che combinando where
con la funzione gather
. Dettagli per gather
possono essere trovati a
https://www.tensorflow.org/versions/master/api_docs/python/array_ops/slicing_and_joining
PS. Ovviamente, x>1
non è differenziabile rispetto a x
... tf può essere ottimo, ma non funziona magicamente :).
Ma sia 'select' che' where' prendono come input una maschera booleana. Come si prende il tensore 'x' come input e si produce una maschera booleana che è' True' dove 'x> 1'? –
Sembra che sto cercando gli operatori di confronto: https://www.tensorflow.org/versions/r0.11/api_docs/python/control_flow_ops.html#comparison-operators –
Prova:
ones = tf.ones_like(x) # create a tensor all ones
mask = tf.greater(x, ones) # boolean tensor, mask[i] = True iff x[i] > 1
slice_y_greater_than_one = tf.boolean_mask(y, mask)
Vedi tf.boolean_mask
EDIT: un altro modo (migliore?) Per farlo:
import tensorflow as tf
x = tf.constant([1, 2, 0, 4])
y = tf.Variable([1, 2, 0, 4])
mask = x > 1
slice_y_greater_than_one = tf.boolean_mask(y, mask)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print (sess.run(slice_y_greater_than_one)) # [2 4]
tf.boolean_mask
fa il lavoro, ma su alcune piattaforme come Raspberry Pi o OSX, l'operazione non è supportata nelle distribuzioni di ruote Tensorflow (controllare questo tf.boolean_mask not supported on OSX. Quindi un'alternativa è usare where
e gather
come suggerito da @Jackson Loper. Per esempio:
x = tf.Variable([1, 2, 0, 4])
ix = tf.where(x > 1)
y = tf.gather(x, ix)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print(sess.run(y))
- 1. Ricerca dizionario tensorflow con tensore di stringa
- 2. Tensorflow "operazione mappa" per tensore?
- 3. Prodotto tensore bilineare in TensorFlow
- 4. Swap tensore assi in tensorflow
- 5. Theano indicizzazione avanzata per tensore, indice condiviso
- 6. TensorFlow: utilizzo di un tensore per indicizzare un altro tensore
- 7. Preprocesso di un tensore Tensorflow in Numpy
- 8. TensorFlow: lancia un tensore float64 a float32
- 9. Tensore della stringa di unione in TensorFlow
- 10. TensorFlow: il tensore Dst non è inizializzato
- 11. tensore di importazione con formato mat a tensorflow
- 12. Come creare un'istruzione if usando un Tensore booleano
- 13. Indicizzazione di panda sia con `` loc 'booleano che successivo `iloc`
- 14. TensorFlow Ridimensiona il tensore dell'immagine in forma dinamica
- 15. Come selezionare le righe da un tensore 3D in TensorFlow?
- 16. Modifica della scala di un tensore in tensorflow
- 17. tensorflow map_fn supporta l'assunzione di più di un tensore?
- 18. Regolare il valore singolo all'interno del tensore - TensorFlow
- 19. Python tensorflow: accesso a singoli elementi in un tensore
- 20. Contare il numero di valori "Veri" nel tensore booleano
- 21. Errore tensore: "Il tensore deve provenire dallo stesso grafico del tensore ..."
- 22. intesa strano comportamento indicizzazione 2d-array booleano in NumPy
- 23. Come posso eseguire un ciclo con un tensore come intervallo? (in tensorflow)
- 24. tensorflow costante con dimensioni variabili
- 25. Tensorflow Tensor rimodellamento e pad con zeri
- 26. Tensorflow multidimensionale argmax
- 27. Come funziona tensorflow batch_matmul?
- 28. Passaggio del tensore tra CPU/GPU
- 29. Tensorflow Porta predefinita Tensorboard
- 30. mysql indicizzazione parziale, indicizzazione inversa
Ora è possibile utilizzare tf.boolean_select https://www.tensorflow.org/api_docs/python/array_ops/slicing_and_joining#boolean_mask –