pytorch 学习之 优化器

300 阅读1分钟

优化器

管理并更新模型中的可学习参数的值,使得模型输出更接近真实标签。

初始化函数

class Optimizer(object):
    def __init__(self, params, defaults):
        # 优化器超参数,是一个dict{超参数:值}
        self.defaults = defaults
        # 参数的缓存,如momentum的缓存
        self.state = defaultdict(dict)
        # 管理的参数组,每个参数组用字典存储
        self.param_groups = []
        param_groups = [{'params':para_groups}]

基本方法:

zero_grad()			# 清空所管理参数的梯度
step()				# 执行一步更新
add_param_group()	# 添加参数组,不同参数,可以设置不同学习率
state_dict()		# 获取优化器当前状态信息字典
load_state_dict() 	# 加载状态信息字典

Tips:

  1. 优化器通过地址管理参数,节省内存消耗

学习率(learning rate)

学习率过大会梯度爆炸,过小收敛慢

动量(momentum)

结合当前梯度与上一次更新信息,用于当前更新。

指数加权平均:

y=iN(1β)βiθNiy=\sum^N_i(1-\beta)*\beta^i*\theta_{N-i}

前面的值对当前值的影响,β\beta 为影响权重(记忆周期 ),记忆过往数值个数 11β\frac{1}{1-\beta}NN 为所有值的个数 。 在这里插入图片描述