Тензорный поток получает все переменные в области
У меня есть некоторые переменные, созданные в определенной области, например:
with tf.variable_scope("my_scope"):
createSomeVariables()
...
Затем я хочу получить список всех переменных в "my_scope", чтобы передать его оптимизатору. Каков правильный способ сделать это?
Ответы
Ответ 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 переменных.