Ich möchte die Gradienten von Tensor "Y" in Bezug auf Parametermatrix "X" in Tensorflow berechnen. Insbesondere möchte ich die Gradienten nur für eine bestimmte Menge von "Indizes" von "X" berechnen. Der folgende Code berechnet die gesamten Gradienten zuerst, dann kehrt diese Gradienten auf die gewünschten Indizes entsprechen:Mit Tensorflow's "tf.gather" und "tf.gradienten" zusammen
Y=some_function_of_X
grad=tf.gradients(Y,X)
grads_i_want_to_compute=tf.gather(grad,indices)
Tensorflow des „tf.scatter_sub“ Verwendung, I kann dann die gewünschte Indizes der Parametermatrix „X“ aktualisieren, basierend auf Gradientenabstieg:
das funktioniert einwandfrei, aber am Ende des Tages werden alle Gradienten berechnet! Aus Gründen der Verarbeitungsgeschwindigkeit möchte ich nicht alle Gradienten berechnen. So versuchte ich das:
Y=some_function_of_X
sparse_X=tf.gather(X,indices)
grads_i_want_to_compute = tf.gradient(Y,sparse_X)
tf.scatter_sub(X,indices,learning_rate*grads_i_want_to_compute)
In letzterem, "tf.gradient" gibt "keine" Objekte zurück, so kann ich nicht fortfahren. Kann jemand dieses Problem lösen?