tensorflow:《机器学习笔记与实战》之神经网络4.3 滑动平均

1.泛化能力

模型适用于新样本的能力为泛化 (generalization)能力 。适用可以理解为分类 预测  聚类 关联规则,新样本可以理解为新环境。

下图为滑动平均值得计算过程:

工程中滑动平均值得计算如下:

滑动平均值实例代码如下:

#coding:utf-8
#4.3  滑动平均的计算
#设损失函数为 loss=(w+1)^2,令w初值是常熟5。反向传播就是求最优w,即求最小对应的loss 对应的w值。
#使用指数衰减学习率,在迭代的初期得到较高的下降速度,可以在较小的训练轮数下,得到较好的收敛度
import tensorflow as tf
import numpy as np

#定义待优化参数,初值给为5
w = tf.Variable(tf.constant(0,dtype=tf.float32))

#运行了几轮BATCH_SIZE的计数器,初始值给0,设为不被训练
global_step = tf.Variable(0,trainable=False)

#实例化滑动平均衰减率,初始衰减率为0.99,当前轮数为global_step
MOVING_AVERAGE_DECAY = 0.99
ema = tf.train.ExponentialMovingAverage(MOVING_AVERAGE_DECAY, global_step)#定义滑动平均
ema_op = ema.apply(tf.trainable_variables())#定义滑动平均节点


#3生成会话,训练STEPS轮
with tf.Session() as sess:
    init_op = tf.global_variables_initializer()#初始化所有变量
    sess.run(init_op)#初始化所有变量
    #打印出w 和w滑动平均值
    print(sess.run([w,ema.average(w)]))
    
    #参数w的值赋为1 
    sess.run(tf.assign(w,1))
    sess.run(ema_op)
    print(sess.run([w,ema.average(w)]))
    
    #更新step 和 参数w的值,模拟出100轮迭代后,参数w变为10
    sess.run(tf.assign(global_step,100))
    sess.run(tf.assign(w,1))
    sess.run(ema_op)
    print(sess.run([w,ema.average(w)]))
    
    #每次sess.run 会更新一次w的滑动平均值
    sess.run(ema_op)
    print(sess.run([w,ema.average(w)]))

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值