Come posso fare quanto segue in tensorflow?Manipolazione di elementi di matrice in tensorflow
mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element
non posso usare le parentesi quadre [] perché funziona solo su costanti e non su variabili. Non posso usare la funzione slice perché restituisce un tensore e non puoi assegnarlo a un tensore.
import tensorflow as tf
sess = tf.Session()
var1 = tf.Variable(initial_value=[2, 5, -4, 0])
assignZerosOP = (var1[2] = 0) # < ------ This is what I want to do
sess.run(tf.initialize_all_variables())
print sess.run(var1)
sess.run(assignZerosOP)
print sess.run(var1)
stamperà
[2, 5, -4, 0]
[2, 5, 0, 0])
Grazie mille, è stato sicuramente di aiuto e potrei lavorare con quello, ma sarebbe un po 'combriccoso. Che cosa se in realtà avevo bisogno di cambiare il tensore? Non c'è modo di farlo? Voglio implementare la visualizzazione di rete e ho bisogno di propagare un'immagine fino a un livello di attivazione, azzerare tutte le attivazioni tranne una casuale a e quindi propagarla di nuovo. – Shagas
I tensiori sono immutabili. In generale, se vuoi salvare e cambiare stato, lo memorizzerai in una variabile che * puoi * mutare. Altrimenti, basta creare un nuovo tensore derivato dall'originale e usarlo. Nel caso che stai descrivendo, questo è probabilmente l'approccio. – dga
Grazie per la risposta. Ho risolto il problema utilizzando un nuovo tensore derivato dall'originale come suggerito. – Shagas