您的位置:首页 > 运维架构

tf.Graph.name_scope

2016-11-14 15:03 471 查看
tf.Graph.name_scope(name)

返回一个上下文管理器,为操作创建一个层级的name

一个图维持一个name scope的栈。name_scope(...):声明将一个新的name放入context生命周期的一个栈中。

name参数如下:

一个字符串(不以'/' 结尾)将穿件一个新scope name,在这个scope中,上下文中所创建的操作前都加上name这个前缀。如果name之前用过,将调用self.unique_name(name) 确定调用一个唯一的name
使用g.name_scope(...)捕获之前的scope作为scope:声明将被视为一个“全局”的scope name,这允许重新进入一个已经存在的scope
None或空字符串将会重置当前的scope name 为最高级(空)的name scope
#!/user/bin/env python
# coding=utf-8

import tensorflow as tf

with tf.Graph().as_default() as g:
c=tf.constant(5.0,name="c")
assert c.op.name=="c"
c_1=tf.constant(6.0,name="c")
assert c_1.op.name=="c_1"

#creates a scop called "nested"
with g.name_scope("nested") as scope:
nested_c=tf.constant(10.0,name="c")
assert nested_c.op.name=="nested/c"

#creates a nested scope called "inner"
with g.name_scope("inner"):
nested_inner_c=tf.constant(20.0,name="c")
assert nested_inner_c.op.name=="nested/inner/c"

#creates a nested scope called "inner_1"
with g.name_scope("inner"):
nested_inner_1_c=tf.constant(30.0,name="c")
assert nested_inner_1_c.op.name=="nested/inner_1/c"

#treats 'scope' as an absolute name scope, and
#switches to the "nested/" scope.
with g.name_scope(scope):
nested_d=tf.constant(40.0,name="d")
assert nested_d.op.name=="nested/d"

with g.name_scope(""):
e=tf.constant(50.0,name="e")
assert e.op.name=="e"
scope自身的name可以被g.name_scope(...)捕获作为一个scope:,把scope name存储到变量scope中。这个值可以用于命名一个操作的最终结果,例如:
inputs=tf.constant(...)
with g.name_scope('my_layer') as scope:
weights=tf.Variable(...,name="weights")
biases=tf.Variable(...,name="biases")
affine=tf.matmul(inputs,weights)+biases
output=tf.nn.relu(affine,name=scope)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐