TensorFlow的共享变量机制

tf.get_variable()方法是TensorFlow提供的比tf.Variable()稍微高级的创建/获取变量的方法,它的工作方式根据当前的变量域(Variable Scope)的reuse属性变化而变化,我们可以通过tf.get_variable_scope().reuse来查看这个属性,它默认是False

  1. tf.get_variable_scope().reuse == False
    此时调用tf.get_variable(name, shape, dtype, initializer),我们可以创建一个新的变量(或者说张量),这个变量的名字为name,维度是shape,数据类型是dtype,初始化方法是指定的initializer。如果名字为name的变量已经存在的话,会导致ValueError
    一个例子如下:
  1. tf.get_variable_scope().reuse == True
    此时调用tf.get_variable(name),我们 可以 得到一个已经存在的名字为name的变量,如果这个变量不存在的话,会导致ValueError
    一个例子如下:
# reuse var
tf.get_variable_scope().reuse_variables()  # set reuse to True
entity = tf.get_variable(name='entity')

上面的两种情况得到的变量的名字都为name,这是假设在默认的变量域中调用tf.get_variable(),如果在指定的变量域中调用,比如:

# create var
with tf.variable_scope('embedding'):
    entity = tf.get_variable(name='entity', initializer=...)
# reuse var
with tf.variable_scope('embedding', reuse=True):
    entity = tf.get_variable(name='entity')

那么得到的变量entity的名字则是embedding/entity



作者:Zichao
链接:https://www.jianshu.com/p/31992f2813ba
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值