gpt4 book ai didi

python - TensorFlow:如何命名 tf.get_variable 的操作

转载 作者:行者123 更新时间:2023-11-28 20:39:08 26 4
gpt4 key购买 nike

我的问题与此有关 Tensorflow: How to get a tensor by name?

我可以给操作命名。但实际上他们的名字不同。例如:

In [11]: with tf.variable_scope('test_scope') as scope:
...: a = tf.get_variable('a',[1])
...: b = tf.maximum(1,2, name='b')
...: print a.name
...: print b.name
...:
...:
...:
test_scope/a:0
test_scope_1/b:0

In [12]: with tf.variable_scope('test_scope') as scope:
...: scope.reuse_variables()
...: a = tf.get_variable('a',[1])
...: b = tf.maximum(1,2, name='b')
...: print a.name
...: print b.name
...:
...:
...:
test_scope/a:0
test_scope_2/b:0

tf.get_variable 创建与我要求的名称完全相同的变量。操作向范围添加前缀。

我想为我的操作命名,以便我可以得到它。在我的例子中,我想在我的范围内使用 tf.get_variable('b') 获取 b

我该怎么做?由于这个问题 https://github.com/tensorflow/tensorflow/issues/1325,我无法用 tf.Variable 做到这一点可能我需要将附加参数设置为变量范围或操作,或者以某种方式使用 tf.get_variable

最佳答案

我不同意@rvinas 的回答,你不需要创建一个变量来保存你想要检索的张量的值。您可以使用具有正确名称的 graph.get_tensor_by_name 来检索您的张量:

with tf.variable_scope('test_scope') as scope:
a = tf.get_variable('a',[1])
b = tf.maximum(1,2, name='b')

print a.name # should print 'test_scope/a:0'
print b.name # should print 'test_scope/b:0'

现在您想重新创建相同的范围并取回 ab
对于 b,您甚至不需要在范围内,您只需要 b 的确切名称即可。

with tf.variable_scope('test_scope') as scope:
scope.reuse_variables()
a2 = tf.get_variable('a', [1])

graph = tf.get_default_graph()
b2 = graph.get_tensor_by_name('test_scope/b:0')

assert a == a2
assert b == b2

关于python - TensorFlow:如何命名 tf.get_variable 的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39187009/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com