如何获取当前的TensorFlow名称范围

时间:2016-12-01 10:09:54

标签: tensorflow

我使用tf.name_scope创建相对名称范围。

如何获取当前的绝对名称范围?

从代码中看起来tf.get_default_graph()._name_stack会给我这个但看起来像非官方的方式。有官方的方法吗? (我想不是,因此我做了upstream feature request。)

(我实施了一系列功能,例如get_current_name_scope()reuse_name_scope() here。请注意,在混合tf.name_scopetf.variable_scope时需要小心。)

3 个答案:

答案 0 :(得分:13)

尽管golmschenk's answer完全正确,但要查看tf.contrib.framework.get_name_scope的实现方式,可以看到当前名称范围在tf.Graph的方法get_name_scope()中可用:

tf.get_default_graph().get_name_scope()

或者,对于任何图表:

my_graph.get_name_scope()

答案 1 :(得分:5)

目前(2017-06-08)在master和r1.2中是tf.contrib.framework.get_name_scope

答案 2 :(得分:1)

示例:

import tensorflow as tf

with tf.name_scope("foo"):
    with tf.name_scope("bar") as absolute:
        print(absolute)

输出:

foo/bar/

编辑:

如果不访问封闭的上下文管理器,我不知道访问当前名称范围的特定函数。绕道小路可能如下:

import tensorflow as tf

with tf.name_scope("foo"):
    with tf.name_scope("bar") as absolute:
        print(tf.no_op(name='.').name[:-1])

Relevant Doc