Wie kann ich im Tensorflow Folgendes tun?Manipulation von Matrixelementen im Tensorfluss
mat = [4,2,6,2,3] #
mat[2] = 0 # simple zero the 3rd element
Ich kann die eckigen Klammern [] verwenden, da es nur auf Konstanten und nicht auf Variablen arbeitet. Ich kann die Slice-Funktion entweder nicht verwenden, weil das einen Tensor zurückgibt und Sie einem Tensor nicht zuweisen können. Wird
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)
[2, 5, -4, 0]
[2, 5, 0, 0])
Vielen Dank, es war auf jeden Fall eine Hilfe und ich könnte damit arbeiten, aber es wäre etwas kämsig. Was, wenn ich tatsächlich den Tensor ändern müsste? Gibt es keine Möglichkeit, das zu tun? Ich möchte Netzwerkvisualisierung implementieren und ich muss ein Bild bis zu einer Aktivierungsschicht propagieren, alle Aktivierungen mit Ausnahme einer zufälligen ein Null und dann propagieren das zurück. – Shagas
Tensoren sind unveränderlich. Wenn Sie den Status speichern und ändern möchten, speichern Sie ihn im Allgemeinen in einer Variablen, die Sie * mutieren können. Aber ansonsten erstellst du einfach einen neuen Tensor, der vom Original abgeleitet ist und dieses benutzt. In dem Fall, dass Sie beschreiben, ist das wahrscheinlich der Ansatz. – dga
Danke für die Antwort. Ich löste das Problem, indem ich einen neuen Tensor verwendete, der vom Original abgeleitet wurde, wie Sie es vorgeschlagen hatten. – Shagas