变量管理-tf.variable_scope

tf.variable_scope可以控制tf.get_variable的语义,当tf.variable_scope的reuse=True时,tf.get_variable 可以直接获取已经创建的变量。以下代码展示了如何管理变量

#变量管理
import tensorflow as tf
v1=tf.get_variable("v",[1])
print(v1.name)
#输出v:0,v表示变量名称,“:0”表示这个变量是生成这个运算的第一个结果
with tf.variable_scope("foo"):
    v2=tf.get_variable("v",[1])
    print(v2.name)
    #输出foo/v:0,在tf.variable_scope创建变量,名称前灰加入民命空间变量,通过/分割民命空间的名称和变量的名称。
with tf.variable_scope("foo"):
    with tf.variable_scope("bar"):
        v3=tf.get_variable("v",[1])
        print(v3.name)#输出foo/bar/v:0,命名空间可以嵌套,同事变量名的名称也会加入所有命名空间作为前缀
    v4=tf.get_variable("v1",[1])
    print(v4.name)
with tf.variable_scope("",reuse=True):
    v5=tf.get_variable("foo/bar/v",[1])
    print(v5==v3)
    v6=tf.get_variable("foo/v",[1])
    print(v6==v2)

针对上一篇博客中已经使用的代码前向传播过程,以下代码展示了如何使用变量管理来管理比较多的代码命名。

import tensorflow as tf
''''''
def inference(input_tensor,reuse=False):
    with tf.variable_scope("layer1",reuse=reuse):
        weights=tf.get_variable("weights",[INPUT_NODE,LAYER1_NODE],initializer=tf.truncated_normal_initializer(stddev=0.1))
        biases=tf.get_variable("biases",[LAYER1],initializer=tf.constant_initializer(0.0))
        layer1=tf.nn.relu(tf.matmul(input_tensor,weights)+biases)
    with tf.variable_scope("layer2",reuse=False)
        weights=tf.get_variable("weights",[LAYER1_NODE],initializer=tf.truncated_normal_initializer(stddev=0.1))
        biases=tf.get_variable("biases",[OUT_NODE],initializer=tf.constant_initializer(0.0))
        layer2=tf.matmul(layer1,weights)+biases
    return layer2
x=tf.placeholder(tf.float32,shape=[None,INPUT_NODE],name="x-input")
y=inference(x)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值