Подтвердить что ты не робот

Тензорный поток получает все переменные в области

У меня есть некоторые переменные, созданные в определенной области, например:

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

Затем я хочу получить список всех переменных в "my_scope", чтобы передать его оптимизатору. Каков правильный способ сделать это?

4b9b3361

Ответ 1

Я думаю, вы хотите tf.get_collection (tf.GraphKeys.GLOBAL_VARIABLES, scope = 'my_scope'). Это вызовет все переменные в области.

Чтобы перейти к оптимизатору, вы не хотите, чтобы все переменные вам просто нужны обучаемые переменные. Они также хранятся в коллекции по умолчанию, которая tf.GraphKeys.TRAINABLE_VARIABLES.

Ответ 2

Пользователь правильно указал, что вам нужно tf.get_collection(). Я просто приведу простой пример, как это сделать:

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

Обратите внимание, что вы можете предоставить любой из graphKeys, а область действия - регулярное выражение:

scope: (Необязательно.) Если указано, результирующий список фильтруется включают только те элементы, чей атрибут имени совпадает с re.match. Предметы без атрибута name никогда не возвращаются, если предоставляется объем и выбор или re.match означает, что область без специальных токенов фильтры по префиксу.

Итак, если вы пройдете 'some_scope', вы получите 6 переменных.