Sharing Variables in Tensorflow

本文介绍TensorFlow中如何通过tf.variable_scope和tf.get_variable实现变量共享,包括变量的创建与重用,有助于理解如何管理和减少训练过程中的参数数量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      在深度学习的训练过程中,为了减少训练参数数量,或是在不同计算机上并行运算,我们往往需要共享变量。Tensorflow中的变量共享主要是通过tf.variable_scope和tf.variable来实现。

       tf.variable_scope()主要是对于图中大量变量进行批量化管理,域内的变量会被加上同一个前缀名,同时该函数还会自动生成一个同名name_scope(),故域内节点也会加上此前缀。因为同名的变量在运行时会报错,所以此方法减小了命名的麻烦,并让整个graph的变量和节点显得很有层次感。在variable_scope下,我们可以创建新的变量,也可以通过设置reuse参数允许使用已有的变量,具体来说都是通过tf.get_variable()来实现的。

tf.variable_scope(name_or_scope, reuse=None,initializer=None)

我们可以看到,这个函数有3个形参:name_or_scope为域内所有变量指定同一个前缀,reuse设定是否需要重用域内的变量(默认是False所以如果用到了变量重用需要专门设置为True),initializer为域内所有变量指定了初始化方法。

在tf.variable_scope()下创建变量的例子:

with tf.variable_scope("foo"): 
    with tf.variable_scope("bar"):
        v = tf.get_variable("v", [1])           
        assert v.name == "foo/bar/v:0"

在tf.variable_scope()下重用变量的例子:

with tf.variable_scope("foo"):
    v = tf.get_variable("v", [1])
with tf.variable_scope("foo",
                       reuse=True): 
    v1 = tf.get_variable("v", [1])
assert v1 == v
同样都是建立变量,tf.Variable()每次调用时都会建立新的变量,而tf.get_variable()在tf.variable_scope()指定了reuse模式时,会先根据变量名搜索已有的变量,如果发现了就可拿来用,从而实现变量的共享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值