Tensorflow系列:tf.get_variable和tf.variable_scope的使用

转自 //blog.csdn.net/zSean/article/details/75057806

在tensorflow中提供了tf.get_variable函数来创建或者获取变量。

当tf.get_variable用于创建变量时,则与tf.Variable的功能基本相同。

[html]  view plain  copy
  1. #定义的基本等价  
  2. v = tf.get_variable("v",shape=[1],initializer.constant_initializer(1.0))  
  3. v = tf.Variable(tf.constant(1.0,shape=[1]),name="v")  
由以上可见,相同点:通过两函数创建变量的过程基本一样,且tf.variable函数调用时提供的维度(shape)信息以及初始化方法(initializer)的参数和tf.Variable函数调用时提供的初始化过程中的参数基本类似。

                        不同点:两函数指定变量名称的参数不同,对于tf.Variable函数,变量名称是一个可选的参数,通过name="v"的形式给出

                                        而tf.get_variable函数,变量名称是一个必填的参数,它会根据变量名称去创建或者获取变量。

##############################################################################

先通过tf.variable_scope生成一个上下文管理器,并指明需求的变量在这个上下文管理器中,就可以直接通过tf.get_variable获取已经生成的变量。

[html]  view plain  copy
  1. #通过tf.variable_scope函数控制tf.get_variable函数来获取以及创建过的变量  
  2. with tf.variable_scope("zyy"):#zyy的命名空间  
  3.         v=tf.get_variable("v",[1],initializer=tf.constant_initializer(1.0))  #在zyy的命名空间内创建名字为v的变量  
[html]  view plain  copy
  1. with tf.variable_scope("zyy"):  
  2.          v=tf.get_variable("v",[1])  #通过tf.get_variable函数创建v的变量,则会失败,由于在zyy空间中已经生成了一个v的变量  
在上下文管理器中已经生成一个v的变量,若想通过tf.get_variable函数获取其变量,则可以通过reuse参数的设定为True来获取(可以将reuse按照字面意思理解,重用)
[html]  view plain  copy
  1. with tf.variable_scope("zyy",reuse=True):  
  2.       v1=tf.get_variable("v",[1])  
  3. print v==v1   #输出为True  
并且tf.variable_scope只能获取已经创建过的变量。

如果tf.variable_scope函数使用参数reuse=None或者reuse=False创建上下文管理器,则tf.get_variable函数可以创建新的变量。但不可以创建已经存在的变量即为同名的变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值