tensorflow学习之路(2-2):tf.variable_scope(),tf.name_scope(),tf.get_variable()的认识(补充)

本文深入探讨了TensorFlow中的变量管理,包括tf.variable_scope()、tf.name_scope()和tf.get_variable()的作用。tf.get_variable()用于创建或获取变量,其行为取决于scope的reuse标志。tf.variable_scope()主要负责变量命名空间的管理和reuse设置,同时影响variable和ops的命名。tf.name_scope()仅影响ops的命名。文章还阐述了Variable Scope的工作原理和注意事项。
摘要由CSDN通过智能技术生成

tensorflow学习之路(2-1):tf.variable_scope(),tf.name_scope(),tf.get_variable()的认识这篇中,并没有对他们有一个很好的认识,仅仅介绍了他们的使用。而在这篇文章中,将会重新从整体上去理解他们,算是对上篇的一个更好的总结吧。


简要概括:我们可以通过tf.Variable()来新建变量,但是,在tensorflow程序中,我们又需要共享变量(share variables),于是,就有了tf.get_variable()(新建变量或者取已经存在的变量)。但是,因为一般变量命名比较短,那么,此时,我们就需要类似目录工作一样的东西来管理变量命名,于是,就有了tf.variable_scope(),同时,设置reuse标志,就可以来决定tf.get_variable()的工作方式(新建变量或者取得已经存在变量)。此外,在tensorflow中,还存在ops操作,而tf.variable_scope()可以同时对variable和ops的命名有影响,即加前缀;而tf.name_scope()只能对ops的命名加前缀。



先介绍背景:
在简单的模型中,我们可以创建多个variable。而在复杂的模型中,我们往往需要共享大量的variables,且需要在同一位置初始化他们。因此,出现了tf.variable_scope()和tf.get_variable()。

一般可以通过使用dictionary也可以达到共享变量的目的,但是,其在代码外创建变量打破了封装原则,同时,当代码改变时,需要创建更多或者更少或者新建变量。


在tensorflow中的Variable Scope Mechanism 主要包含了下面两个函数:

  • tf.get_variable()
  • tf.variable_scope()

tf.get_variable()主要用于得到或者新建一个variable变量,而不是直接调用tf.Variable().于tf.Variable()之间使用值初始化变量不同,tf.get_variable()主要是通过initializer这个function来初始化新建变量的。此外,variable变量名字较短,容易重复,所以,就需要tf.variable_scope()为变量创建一个命名空间。例如,cnn的每一层中,均有weights和biases这两个变量,通过tf.variable_scope()为每一卷积层命名,就可以防止变量name重复。


Variable Scope是如何工作的呢?


首先,理解tf.get_variable()是如何工作的。一般通过下面方式调用tf.get_variable():

v = tf.get_variable(name, shape, dtype, initializer)

而tf.get_variable()是新建变

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值