5.3 变量管理

TensorFlow的变量初始化函数

初始化函数功能主要参数
tf.constant_initializer将变量初始化为给定常量常量的取值
tf.random_normal_initializer将变量初始化为满足正态分布的随机值正态分布的均值和标准差
tf.truncated_normal_initializer将变量初始化为满足正太分布的随机值,但如果随机出来的值离平均值超过2个标准差,那么这个数将被重新随机。正态分布的均值和标准差
tf.random_uniform_initializer将变量初始化为满足平均分布的随机值最大、最小值
tf.uniform_unit_scaling_initializer将变量初始化为满足平均分布但不影响输出数量级的随机值factor(产生随机值时乘以的系数)
tf.zeros_initializer将变量设置为全0变量维度
tf.ones_initializer将变量设置为全1变量维度
#下面这两个定义是等价的
v = tf.get_variable("v", shape = [1], initialzer = tf.constant_initializer(1.0))
v = tf.Variable(tf.constant(1.0, shape = [1]), name = "v")

   tf.get_variable函数与tf.Variable函数最大的区别在于指定变量名称的参数。对于tf.Variable函数,变量名称是一个可选的参数,通过name = "v"的形式给出。但是对于tf.get_variable函数,变量名称是一个必填的参数。tf.get_variable会根据这个名字取创建或者获取变量。在上述示例程序中,tf.get_variable首先会视图创建一个名字为v的参数,如果创建失败(比如已经有同名的参数),那么这个程序就会报错。这是为了避免无意识的变量复用造成的错误。

  如果需要通过tf.get_variable获取一个已经创建的变量,需要通过tf.variable_scope函数来生成一个上下文管理器,并明确指定在这个上下文管理器中,tf.get_variable将直接获取已经生成的变量。

#在名字为foo的命名空间内创建名字为v的变量
with tf.variable_scope("foo"):
    v = tf.get_variable("v", [1], initializer = tf.constant_initializer(1.0))

#因为在命名空间foo中已经存在名字为v的变量,所以下面代码会报错
with tf.variable_scope("foo"):
    v = tf.get_variable("v", [1])

#生成上下文管理器时,将reuse设置为True。这样tf。get_varibale函数将直接获取已经声明的变量
with tf.variable_scope("foo", reuse = True):
    v1 = tf.get_variable("v", [1])
    print(v == v1)

#将参数reuse设置为True时,代表v, v1代表的是相同的TensorFlow中变量
#命名空间bar中还没有创建变量v,所以下面代码会报错
with tf.variable_scope("bar", reuse = True):
    v = tf.get_variable("v", [1])

  上述样例说明了通过tf.variable_scope函数可以控制tf.get_variable函数的语义。当tf.variable_scope函数使用参数reuse = True生成上下文管理器时,这个上下文管理器内所有的tf.get_variable函数会直接获取已经创建的变量。如果变量不存在,则tf.get_variable函数会报错。相反,如果tf.variable_scope函数使用餐胡reuse = None或者reuse = False创建上下文管理器,tf.get_variable操作将创建新的变量。如果同名的变量已经存在则tf.get_variable函数将报错。

转载于:https://www.cnblogs.com/CZT-TS/p/11241605.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值