40 votes

Tensorflow prend en compte toutes les variables

J'ai des variables créées dans un certain périmètre comme celui-ci:

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

Je souhaite ensuite obtenir la liste de toutes les variables dans "my_scope" afin de pouvoir la transmettre à un optimiseur. Quel est le bon moyen de le faire?

78voto

user728291 Points 1593

Je pense que vous voulez tf.get_collection (tf.GraphKeys.GLOBAL_VARIABLES, scope = 'my_scope') . Cela aura toutes les variables dans une portée.

Pour passer à un optimiseur, vous ne voulez pas toutes les variables, vous voulez simplement les variables pouvant être entraînées. Ceux-ci sont également conservés dans une collection par défaut, qui est tf.GraphKeys.TRAINABLE_VARIABLES .

15voto

Salvador Dali Points 11667

L'utilisateur a correctement souligné que vous avez besoin d' tf.get_collection(). Je vais juste donner un exemple simple, comment faire ceci:

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

Notez que vous pouvez fournir les graphKeys et la portée est une expression régulière:

champ d'application: (Facultatif.) Si elle est fournie, la liste est filtrée pour inclure uniquement les éléments dont le nom de l'attribut correspond à l'aide de ré.match. Les éléments sans un nom d'attribut ne sont jamais retournés si un champ est fourni et le choix ou le re.match signifie qu'une portée sans jetons filtres par préfixe.

Donc, si vous allez passer 'some_scope", vous obtiendrez 6 variables.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X