Mantenere le variabili costanti durante l’ottimizzazione

Ho un grafico computazionale TensorFlow per un tensore di perdita L che dipende da 2 tf.Variabili, A e B.

Mi piacerebbe eseguire la salita del gradiente sulla variabile A (A + = gradiente di L wrt A) tenendo fisso B e viceversa – eseguire l’ascesa del gradiente su B (B + = gradiente di L wrt B) mentre si tiene fisso A. Come faccio a fare questo?

tf.stop_gradient(tensor) potrebbe essere quello che stai cercando. Il tensore sarà trattato come costante per il calcolo del gradiente. È ansible creare due perdite con parti diverse trattate come costanti.

L’altra opzione (e spesso migliore) sarebbe quella di creare 2 ottimizzatori ma ottimizzare esplicitamente solo sottoinsiemi di variabili, ad es

 train_a = tf.train.GradientDescentOptimizer(0.1).minimize(loss_a, var_list=[A]) train_b = tf.train.GradientDescentOptimizer(0.1).minimize(loss_b, var_list=[B]) 

e puoi scorrere tra loro sugli aggiornamenti.