Tensorflow obtiene todas las variables en el ámbito


Tengo algunas variables creadas dentro de un cierto ámbito como este:

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

Luego quiero obtener la lista de todas las variables en "my_scope" para poder pasarla a un optimizador. ¿Cuál es la manera correcta de hacer esto?

 32
Author: Vlad Firoiu, 2016-04-10

2 answers

Creo que quieres tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope= 'my_scope') . Esto obtendrá todas las variables en un ámbito.

Para pasar a un optimizador no desea todas las variables solo desea las variables entrenables. También se guardan en una colección predeterminada, que es tf.GraphKeys.TRAINABLE_VARIABLES.

 61
Author: user728291,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-17 20:07:32

El usuario señaló correctamente que necesita tf.get_collection(). Voy a dar un ejemplo sencillo de cómo hacer esto:

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

Observe que puede proporcionar cualquiera de las GraphKeys y scope es una expresión regular:

Alcance: (Opcional.) Si se suministra, la lista resultante se filtra a incluya solo elementos cuyo atributo name coincida con re.coincidir. Elemento sin un atributo name nunca se devuelven si se suministra un ámbito y la elección o re.coincidencia significa que un alcance sin fichas especiales filtros por prefijo.

Así que si pasas 'some_scope' obtendrás 6 variables.

 11
Author: Salvador Dali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-12 02:27:12