Tensorflow ottiene tutte le variabili nell’ambito

Ho alcune variabili create all’interno di un certo ambito come questo:

with tf.variable_scope("my_scope"): createSomeVariables() ... 

Quindi voglio ottenere l’elenco di tutte le variabili in “my_scope” in modo che possa passarlo a un ottimizzatore. Qual è il modo giusto per farlo?

Penso che tu voglia tf.get_collection (tf.GraphKeys.GLOBAL_VARIABLES, scope = ‘my_scope’) . Questo otterrà tutte le variabili in un ambito.

Per passare a un ottimizzatore non vuoi tutte le variabili vuoi solo le variabili trainabili. Anche questi sono conservati in una collezione predefinita, che è tf.GraphKeys.TRAINABLE_VARIABLES .

L’utente ha correttamente indicato che è necessario tf.get_collection() . Darò solo un semplice esempio su come fare questo:

 import tensorflow as tf with tf.name_scope('some_scope1'): a = tf.Variable(1, 'a') b = tf.Variable(2, 'b') c = tf.Variable(3, 'c') with tf.name_scope('some_scope2'): d = tf.Variable(4, 'd') e = tf.Variable(5, 'e') f = tf.Variable(6, 'f') h = tf.Variable(8, 'h') for i in tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope='some_scope'): print i # i.name if you want just a name 

Si noti che è ansible fornire qualsiasi graphKeys e l’ambito è un’espressione regolare:

scope: (Facoltativo) Se fornito, l’elenco risultante viene filtrato per includere solo gli articoli il cui attributo nome corrisponde a re.match. Gli elementi senza un attributo name non vengono mai restituiti se viene fornito un ambito e la scelta o re.match significa che un ambito senza filtri speciali per prefisso.

Quindi se passerai ‘some_scope’ otterrai 6 variabili.