Tensorflow详解(四)——变量空间

管理变量的变量空间

方法一:tf.variable_scope()

              reuse=False——get_variable()函数将创建新的变量,此时的name属性不可以与已经存在的变量相同
                       =True——get_variable()函数直接获取name属性相同的已经存在的变量

             无论get_variable()还是variable()都会被添加变量空间的名称前缀

方法二:tf.name_scope()

     使用get_variable()函数生成的变量名称不会添加变量空间的名称前缀,variable()会被添加变量空间的名称前缀

函数详解


tf.variable_scope(name_or_scope,default_name=None,values=None,initializer=None,regularizer=None,caching_device=None,partitioner=None,custom_getter=None,reuse=None,dtype=None)

使用variable_scope()函数创建变量空间时,在空间内部创建的变量名称都会带上这个变量空间的名称作为前缀,

参数:

   name_or_scope: `string或VariableScope:要打开的范围
   default_name: 如果name_or_scope参数为None,则将使用默认名称,此名称将被唯一。 如果提供了name_or_scope,它将不                          会被使用,因此它不是必需的,可以是None。
    values:传递给op函数的Tensor参数列表
   initializer: 此范围内的变量的默认初始化程序
   regularizer:此范围内的变量的默认正则符
   caching_device:此范围内的变量的默认缓存设备
   partitioner:此范围内变量的默认分区
   custom_getter:此范围内变量的默认定制getter
   reuse=False——get_variable()函数将创建新的变量,此时的name属性不可以与已经存在的变量相同
            =True——get_variable()函数直接获取name属性相同的已经存在的变量
   dtype:在此范围中创建的变量类型(默认为传递范围中的类型,或从父范围继承)
   use_resource=False(默认值),则所有变量都将是常规变量。
                         =True,明确语义的experimental ResourceVariables变量
                              当启用eager执行时,此参数始终强制为True
    constraint :
    auxiliary_name_scope:

返回

   返回一个用于定义创建variable(层)的op的上下文管理器。 


案例1,reuse的使用

import tensorflow as tf

#在变量空间“one"中创建变量a
with tf.variable_scope("one",reuse=False):
    a1=tf.get_variable('a',[3,3],initializer=tf.truncated_normal_initializer(stddev=0.1))
#在变量空间“one"中创建变量a1,
with tf.variable_scope("one",reuse=False):
    a2=tf.get_variable('a1',[3,3],initializer=tf.truncated_normal_initializer(stddev=0.1))
 #获取变量空间“one"中创建变量a1,
with tf.variable_scope("one",reuse=True):
    a3=tf.get_variable('a1')

with tf.Session() as sess:
    tf.global_variables_initializer().run()
    a1,a2,a3=sess.run([a1,a2,a3])
    print(a1)
    print(a2)
    print(a3)

输出结果:可以看出,a3=a2

a1——

[[ 0.02218279 -0.0762048  -0.08831318]
 [-0.14949541 -0.11146082 -0.07375276]
 [ 0.06056631 -0.08629142  0.01646093]]

a2——
[[-0.09969015 -0.08382337 -0.1366466 ]
 [-0.07004079 -0.00893326 -0.09068973]
 [ 0.03591403  0.10408155 -0.00444596]]

a3——
[[-0.09969015 -0.08382337 -0.1366466 ]
 [-0.07004079 -0.00893326 -0.09068973]
 [ 0.03591403  0.10408155 -0.00444596]]

 

 

 

 

 

 

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值