(警告:我不会回答的主要问题有关创建效用函数)
究其原因,张量有这样的名字:{name}_{repetition}:0
是不是因为你一次又一次这些张量添加到默认图。
一种解决方法是始终指定您与graph.as_default()
工作图:
graph = tf.Graph()
with graph.as_default():
with tf.variable_scope('foo'):
var = tf.get_variable('var', [])
print var.name # should be 'foo/var:0'
tensor = tf.constant(2., name='tensor')
print tensor.name # should be 'foo/tensor:0'
如果再次运行它,你会看到同样的结果,因为graph = tf.Graph()
线将创建一个新图。
graph = tf.Graph()
with graph.as_default():
with tf.variable_scope('foo'):
var = tf.get_variable('var', [])
print var.name # should be 'foo/var:0'
tensor = tf.constant(2., name='tensor')
print tensor.name # should be 'foo/tensor:0'
的缺点是,现在你可以不依赖于默认的图形,并应通过图表来计算,例如所有变量的列表:
print tf.all_variables() # returns []
with graph.as_default():
print tf.all_variables() # returns [...] with all variables
我应该诉诸于正则表达式,然后? –
对我来说,找到张量名称的最好方法是在TensorBoard上绘制图形 –
由于同样的问题,TensorBoard会变得杂乱无章。 –