6

По имен я имею в виду:Как получить ссылку на имя переменной/заполнителя?

tf.placeholder(tf.float32, name='NAME') 
tf.get_variable("W", [n_in, n_out],initializer=w_init()) 

У меня есть несколько заполнителей, которые я хочу, чтобы получить доступ из внешних функций без прохождения ссылки, с предположением, что заполнители держащие данные имена существуют, как вы можете получить ссылку им? (это все во время построения графика, а не во время выполнения)

И мой второй вопрос: как я могу получить все переменные, которые содержат заданное имя независимо от области действия?

Пример: все мои весы имеют название «W» под многими областями, я хочу, чтобы все они были включены в список. Я не хочу добавлять их вручную. То же самое можно сделать с предубеждениями, скажем, я хочу сделать гистограмму.

ответ

11

Прежде всего, вы можете получить заполнитель, используя tf.Graph.get_tensor_by_name(). Например, предположим, что вы работаете с графиком по умолчанию:

placeholder1 = tf.placeholder(tf.float32, name='NAME') 
placeholder2 = tf.get_default_graph().get_tensor_by_name('NAME:0') 
assert placeholder1 == placeholder2 

Во-вторых, я хотел бы использовать следующую функцию, чтобы получить все переменные с заданным именем (независимо от сферы их применения):

def get_all_variables_with_name(var_name): 
    name = var_name + ':0' 
    return [var for var in tf.all_variables() if var.name.endswith(name)] 
+0

Flawless , благодаря. Одна вещь, которую я хотел бы отметить, почему: 0? И когда вы когда-нибудь используете: 1? –

+5

'op_name: 0' означает« тензор, который является 0-м выходом операции, называемой «op_name». » Таким образом, вы можете использовать '...: 1', чтобы получить результат операции с несколькими выходами, но оба' tf.placeholder() 'и' tf.Variable' являются операциями с одним выходом, поэтому вы всегда будете использовать '...: 0 для них. – mrry

Смежные вопросы