Pytorch教程[08]优化器

一.什么是优化器

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

导数:函数在指定坐标轴上的变化率
方向导数:指定方向上的变化率
梯度:一个向量,方向为方向导数取得最大值的方向
在这里插入图片描述

二.optimizer的属性

基本属性
• defaults:优化器超参数
• state:参数的缓存,如mom en tum的缓存
• params_groups:管理的参数组
• _step_count:记录更新次数,学习率调整中使用

class Optimizer(object):
	def __init__(self, params, defaults):
		self.defaults = defaults
		self.state = defaultdict(dict)
		self.param_groups = []
		
		param_groups = [{
    
    'params': param_groups}]

三.optimizer的方法

基本方法
• zero_grad():清空所管理参数的梯度
• step():执行一步更新
• add_param_group():添加参数组
• state_dict():获取优化器当前状态信息字典
• load_state_dict() :加载状态信息字典
pytorch特性:张量梯度不自动清零

class Optimizer(object):

	def zero_grad(self):
		for group in self.param_groups:
			for p in group['params']:
				if p.grad is not None:
					p.grad.detach_()
					p.grad.zero_()
class Optimizer(object):
	def __init__(self, params, defaults):
		self.defaults = defaults
		self.state = defaultdict(dict)
		self.param_groups = []
class Optimizer(object):
def add_param_group(self, param_group):
	for group in self.param_groups:
		param_set.update(set(group['params’]))
		
	self.param_groups.append(param_group)
class Optimizer(object):

	def state_dict(self):
		return {
    
    
			'state': packed_state, 'param_groups': param_groups, 
			}
	def load_state_dict(self, state_dict):

优化器:

  1. optim.SGD:随机梯度下降法
  2. optim.Adagrad:自适应学习率梯度下降法
  3. optim.RMSprop: Adagrad的改进
  4. optim.Adadelta: Adagrad的改进
  5. optim.Adam:RMSprop结合Momentum
  6. optim.Adamax:Adam增加学习率上限
  7. optim.SparseAdam:稀疏版的Adam
  8. optim.ASGD:随机平均梯度下降
  9. optim.Rprop:弹性反向传播
  10. optim.LBFGS:BFGS的改进

猜你喜欢

转载自blog.csdn.net/weixin_43694096/article/details/123442530