Ich habe n
(z. B. n = 3) Bereiche und x
(z. B. x = 4) keine der Variablen in jedem Bereich definiert. Die Bereiche sind: alle extrahieren und liefern die Variablen aus nur einer der Rahmen auf der Grundlage eines Kriterien während der Laufzeittf.get_collection zum Extrahieren von Variablen eines Bereichs
model/generator_0
model/generator_1
model/generator_2
Sobald ich den Verlust zu berechnen, was ich will. Daher ist der Index des Umfangs idx
, die ich wählen ist ein argmin Tensor in int32 werfen
<tf.Tensor 'model/Cast:0' shape=() dtype=int32>
ich schon versucht:
train_vars = tf.get_collection(tf.GraphKeys.TRAINABLE_VARIABLES, 'model/generator_'+tf.cast(idx, tf.string))
, die offensichtlich nicht funktionierte. Gibt es eine Möglichkeit, alle x
Variablen, die zu diesem bestimmten Bereich gehören, mithilfe von idx an den Optimierer zu übergeben.
Vielen Dank im Voraus!
Vignesh Srinivasan
leider die optim_vars die Variablen alle aus allen Bereichen enthält. Mein Problem ist, dass ich ~ mit tf.variable_scope ('generator_0'): v1 = tf.Variable (tf.ones (())) loss1 = tf.identity (v1) mit tf.variable_scope ('generator_1'): v2 = tf.Variable (tf.ones (())) loss2 = tf.identity (v2) ~ Ich möchte dann das tf.minimum (loss, loss2) finden und die Variablen übergeben zu diesem Verlust zum Optimierer gehören. – viggie
Ich habe es gerade in der neuesten Version (nächtlich) getestet und 'optim_vars' enthält nur Variablen von' adapoptim' scope –
Sie verwenden den gleichen definierten Verlust, den ich vorher nicht kenne. Ich muss die 'min_idx = tf.cast (tf.argmin (tf.stack ([loss1, loss2]), 0), tf.int32)' finden und dann diese 'loss = tf.stack ([loss1, loss2 ]) [min_idx] 'zum Optimierer. Und deshalb erhalte ich alle Variablen, die durch den Vorschlag definiert sind. – viggie