织梦网站地图制作,什么是微网站,装饰网站模版,文创产品设计方案ppt四#xff0e;损失函数和优化器
4.1 均值初始化
为减轻梯度消失和梯度爆炸#xff0c;选择合适的权重初值。
十种初始化方法
Initialization Methods
1. Xavie r均匀分布
2. Xavie r正态分布 4. Kaiming正态分布
5. 均匀分布
6. 正态分布
7. 常数分布
8. 正交矩阵初…四损失函数和优化器
4.1 均值初始化
为减轻梯度消失和梯度爆炸选择合适的权重初值。
十种初始化方法
Initialization Methods
1. Xavie r均匀分布
2. Xavie r正态分布 4. Kaiming正态分布
5. 均匀分布
6. 正态分布
7. 常数分布
8. 正交矩阵初始化
9. 单位矩阵初始化
10. 稀疏矩阵初始化
4.2 损失函数
1、nn.CrossEntropyLoss
nn.CrossEntropyLoss(weightNone,
size_averageNone,
ignore_index-100,
reduceNone,
reduction‘mean’‘)
功能 nn.LogSoftmax ()与nn.NLLLoss ()结合进行
交叉熵计算
主要参数
• w eigh t各类别的loss设置权值
•
ignore _ind e x忽略某个类别
•
redu c tion 计算模式可为none/sum /m e an
none- 逐个元素计算
sum- 所有元素求和返回标量 2、 nn.NLLLoss
功能实现负对数似然函数中的负号功能
主要参数
• weight各类别的loss设置权值
• ignore_index忽略某个类别
•reduction计算模式可为none/sum /m e an
none-逐个元素计算
nn.NLLLoss(weightNone,
size_averageNone,
ignore_index-100,
reduceNone,
reductionmean)sum-所有元素求和返回标量
m e an-加权平均返回标量
3、 nn.BCELoss
nn.BCELoss(weightNone,
size_averageNone,
reduceNone,
reductionmean’)
功能二分类交叉熵
注意事项输入值取值在[0,1]
主要参数
• weight各类别的loss设置权值
• ignore_index忽略某个类别
• reduction计算模式可为none/sum /m e an
none-逐个元素计算 4、 nn.BCEWithLogitsLoss
nn.BCEWithLogitsLoss(weightNone,
size_averageNone,
reduceNone, reductionmean,
pos_weightNone)
功能结合Sigmoid与二分类交叉熵
注意事项网络最后不加sigmoid函数
主要参数
• pos _weight 正样本的权值
• weight各类别的loss设置权值
•ignore_index忽略某个类别
•reduction 计算模式可为none/sum /mean
mean-加权平均返回标量e aum
5. nn.L1Loss
6. nn.MSELoss
7. nn.SmoothL1Loss
8. nn.PoissonNLLLoss
9. nn.KLDivLoss
10. nn.MarginRankingLoss
11. nn.MultiLabelMarginLoss
12. nn.SoftMarginLoss
13. nn.MultiLabelSoftMarginLoss
14. nn.MultiMarginLoss
15. nn.TripletMarginLoss
16. nn.HingeEmbeddingLoss
17. nn.CosineEmbeddingLoss
18. nn.CTCLoss -所有元素求和返回标量
4.3优化器 Optimizer
pytorch的优化器管理并更新模型中可学习参数的值使得模型输出更接近真实标签
导数函数在指定坐标轴上的变化率
方向导数指定方向上的变化率
梯度一个向量方向为方向导数取得最大值的方向
基class Optimizer(object):
def __init__(self, params, defaults):
self.defaults defaults
self.state defaultdict(dict)
self.param_groups []
param_groups [{params:
param_groups}]本属性
• defaults优化器超参数
• state参数的缓存如mom en tum的缓存
• params_groups管理的参数组
• _step_count记录更新次数学习率调整中使用 基本方法
• 1.zero_grad()清空所管理参数的梯度
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_()
2. step()执行一步更新 3. add_param_group()添加参数组
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)
4.state_dict()获取优化器当前状态信息字典
• 5.load_state_dict() 加载状态信息字典
class Optimizer(object):
def state_dict(self):
return {
state: packed_state,
param_groups: param_groups,
}
def load_state_dict(self, state_dict):
学习率
Learning Rate
梯度下降: − ( ) − LR * ()
学习率learning rate控制更新的步伐
Momentum动量冲量
结合当前梯度与上一次更新信息用于当前更新
梯度下降 − ∗ ( )
pytorch中更新公式 ∗ − ( ) − ∗ ∗ () () ∗ ( ∗ ()) () ∗ () ∗ () ∗ () ∗ () ∗
1.optim.SGD
主要参数
• params管理的参数组
• lr初始学习率
• momentum动量系数贝塔
• weight_decayL2正则化系数
• nesterov是否采用NAG
optim.SGD(params, lrobject object,
momentum0, dampening0,
weight_decay0, nesterovFalse)
优化器
Optimizer
1. optim.SGD随机梯度下降法
2. optim.Adagrad自适应学习率梯度下降法
3. optim.RMSprop Adagrad的改进
4. optim.Adadelta Adagrad的改进
5. optim.AdamRMSprop结合Momentum
6. optim.AdamaxAdam增加学习率上限
7. optim.SparseAdam稀疏版的Adam
8. optim.ASGD随机平均梯度下降
9. optim.Rprop弹性反向传播
10. optim.LBFGSBFGS的改进