Tensorflow学习笔记(6)——变量管理和模型持久化

1 变量管理

TF提供了通过变量名称来创建和获取一个变量的机制,不需要将变量的参数到处传递。
主要通过tf.get_variabletf.variable_scope实现。
tf.Variable和tf.get_variable等价使用样例:

weight = tf.get_variable(name='weights', shape=[5, 5, 3, 1], initializer=tf.truncated_normal_initializer(stddev=0.1))

weight = tf.Variable(tf.truncated_normal(shape=[5, 5, 3, 1], stddev=0.1),name='weights')

TF中的initializer函数和之前的常量生成函数大部分一一对应。如下:

表 TF中的变量初始化函数

初始化函数名称将变量初始化为主要参数
tf.random_nomal_initializer正态分布均值、标准差
tf.truncated_normal_initializer正态分布,但如果随机出来的值偏离平均值超过2个标准差,那么这个数将会被重新随机均值、标准差
tf.random_uniform_initializer平均分布最小、最大取值
tf.constant_initializer给定常量常数取值
tf.uniform_unit_scaling_initializer平均分布但不影响输出数量级factor(产生随机值时乘以的系数)
tf.zeros_initializer全0变量维度
tf.ones_initializer全1变量维度

对于tf.get_variable,name必填而tf.variable_scope选填。避免变量复用造成的错误。
如果需要通过tf.get_variable获取一个已经创建的变量,需要通过tf.variable_scope生成一个上下文管理器,若reuse参数为True,则此管理器中的所有tf.get_variable将直接获取已经生成的变量,若为None或False,则创建新的变量,此时若存在同名变量则报错。

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

#获取已经声明的变量
with tf.variable_scope("foo", reuse=True):
    v1=tf.get_variable(name="v",shape=[1])
    print(v==v1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值