2016-06-11 24 views
1

与特定的张量都tf.Variables我想卫生组织名称包含n创建一个效用函数,我给它一个张量t和变量名n,函数返回(它存在)的variable并且是t图表的一部分。获取TensorFlow

def get_variable(t, n): 
    #code 
    return variable 

我想这样做的原因是,使用Jupyter我常常创建多个时间的图表,而决定的最佳结构,但张量名称不断变化的东西,如:{name}_{repetition}:0,所以寻找他们通过tf.all_variables()变得越来越更难。

如果我可以限制搜索到与特定张量有关的变量,因为它的标识符是最新的重复,会更容易。

回答

2

(警告:我不会回答的主要问题有关创建效用函数)

究其原因,张量有这样的名字:{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 
+0

我应该诉诸于正则表达式,然后? –

+0

对我来说,找到张量名称的最好方法是在TensorBoard上绘制图形 –

+0

由于同样的问题,TensorBoard会变得杂乱无章。 –