基于pytorch的深度学习基础4——损失函数和优化器

四.损失函数和优化器

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(weight=None,

size_average=None,

ignore_index=-100,

reduce=None,

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(weight=None,

size_average=None,

ignore_index=-100,

reduce=None,

reduction='mean')sum-所有元素求和,返回标量

m e an-加权平均,返回标量

3、 nn.BCELoss

nn.BCELoss(weight=None,

size_average=None,

reduce=None,

reduction='mean’)

功能:二分类交叉熵

注意事项:输入值取值在[0,1]

主要参数:

• weight:各类别的loss设置权值

• ignore_index:忽略某个类别

• reduction:计算模式,可为none/sum /m e an

none-逐个元素计算

4、 nn.BCEWithLogitsLoss

nn.BCEWithLogitsLoss(weight=None,

size_average=None,

reduce=None, reduction='mean',

pos_weight=None)

功能:结合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_decay:L2正则化系数

• nesterov:是否采用NAG

optim.SGD(params, lr=<object object>,

momentum=0, dampening=0,

weight_decay=0, nesterov=False)

优化器

Optimizer

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的改进

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63436.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

物品识别 树莓派 5 YOLO v5 v8 v10 11 计算机视觉

0. 要实现的效果 让树莓派可以识别身边的一些物品&#xff0c;比如电脑&#xff0c;鼠标&#xff0c;键盘&#xff0c;杯子&#xff0c;行李箱&#xff0c;双肩包&#xff0c;床&#xff0c;椅子等 1. 硬件设备 树莓派 5 raspberrypi.com/products/raspberry-pi-5/树莓派官方摄…

爬取豆瓣电影的数据-----爬虫实战案例(爬取文字)

爬取豆瓣电影的数据 首先打开"豆瓣电影TOP250"网页&#xff1a; 右击鼠标&#xff0c;找到检查点击&#xff0c;然后再点击网络向上拉动&#xff0c;找到名称栏中的第一个&#xff0c;点击打开可以在标头里看到请求URL和请求方式&#xff0c;复制URL&#xff08;需…

MySQL 8.0 新特性汇总

文章目录 前言1. 运维管理 1.1 可持久化变量1.2 管理员端口1.3 资源组1.4 数据库粒度只读1.5 show processlist 实现方式1.6 加速索引创建速度1.7 控制连接的内存使用量1.8 克隆插件1.9 mysqldump 新增参数1.10 慢日志增强1.11 快速加列1.12 InnoDB 隐藏主键1.13 Redo 配置1.14…

使用PHPUnit使用本地调试代替远程调试,快速提高开发效率

Laravel 是一个在 Linux 环境下表现非常出色的 PHP 框架&#xff0c;但它在 Windows 环境下可能会遇到一些兼容性和配置问题。为了调试或没试的方便可以在 Windows 环境下进行 Laravel PHPUnit进行本地调试和测试。 本地主要针对断点调试效果非常高效。 在 Laravel 中&#x…

【BUG】VMware|vmrest正在运行此虚拟机,无法配置或删除快照

VMware版本&#xff1a;VMware 16 文章目录 省流版问题解决方案 详细解释版问题解决方案总结 省流版 问题 只读&#xff0c;因为vmrest正在运行虚拟机。 解决方案 参考&#xff1a;虚拟机设置&#xff0c;只读&#xff0c;因为vmrest正在运行此虚拟机。有谁遇到过这种问题吗&…

HTML表单-第二部分

HTML表单 表单元素是允许用户在表单中输入内容&#xff0c;比如&#xff1a;文本域&#xff0c;下拉列表&#xff0c;单选框&#xff0c;复选框等等‘ 使用<from>标签创建 例如 <from> . input . </from> HTML表单-输入元素 <input>标签创建&#xff…

声音克隆GPT-SoVITS

作者&#xff1a;吴业亮 博客&#xff1a;wuyeliang.blog.csdn.net 一、原理介绍 GPT-SoVITS&#xff0c;作为一款结合了GPT&#xff08;生成预训练模型&#xff09;和SoVITS&#xff08;基于变分信息瓶颈技术的歌声转换&#xff09;的创新工具&#xff0c;正在声音克隆领域掀…

008-MAC地址表配置

MAC地址表配置 MAC地址表中对于接口的相关配置&#xff0c;目前只能在二层以太网端口、二层聚合接口等二层接口上进行。本章节内容只涉及单播的静态、动态、黑洞MAC地址表项的配置。有关静态组播MAC地址表项的相关介绍和配置内容&#xff0c;请参见“IP组播配置指导”中的“IGM…

2024-10-13-B fd 重定向 缓冲区

1 一切皆文件 1.1 虚拟文件系统 在系统层面&#xff0c;做了一层软件的封装&#xff0c;struct file 里有操作表&#xff08;即函数指针的集合&#xff09;&#xff0c;可以调用底层的读写方法。虚拟文件系统&#xff08;VFS&#xff09;是一种神奇的抽象&#xff0c;它使得…

Metasploit使用

最近在学Metasploit&#xff0c;Metasploit是一个免费的、可下载的渗透测试框架&#xff0c;通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击&#xff0c;是一个集成了渗透测试全流程的渗透工具。 图一 模块&#xff1a;模块组织按照不同的用途分为7种类型的模块 &am…

Github 2024-12-01 开源项目月报 Top20

根据Github Trendings的统计,本月(2024-12-01统计)共有20个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10TypeScript项目9Go项目2HTML项目1Shell项目1Jupyter Notebook项目1屏幕截图转代码应用 创建周期:114 天开发语言:TypeScript, Py…

MongoDB集群的介绍与搭建

MongoDB集群的介绍与搭建 一.MongoDB集群的介绍 注意&#xff1a;Mongodb是一个比较流行的NoSQL数据库&#xff0c;它的存储方式是文档式存储&#xff0c;并不是Key-Value形式&#xff1b; 1.1集群的优势和特性 MongoDB集群的优势主要体现在以下几个方面&#xff1a; (1)高…

Facebook:筑牢隐私安全堡垒,守护社交净土

在全球社交媒体平台中&#xff0c;Facebook一直是风靡全球的佼佼者。然而&#xff0c;随着数字化信息的迅速膨胀&#xff0c;用户隐私保护的重要性日益凸显。面对用户对数据安全性的高度重视&#xff0c;Facebook致力于通过一系列措施来确保隐私保护&#xff0c;守护每位用户的…

多系统萎缩锻炼如何好起来?

多系统萎缩&#xff08;Multiple System Atrophy, MSA&#xff09;是一种复杂的神经系统退行性疾病&#xff0c;影响着患者的自主神经系统、运动系统和平衡功能等多个方面。面对这一挑战&#xff0c;科学、合理的锻炼对于缓解症状、提高生活质量至关重要。本文将详细介绍多系统…

实现RAGFlow-0.14.1的输入框多行输入和消息框的多行显示

一、Chat页面输入框的修改 1. macOS配置 我使用MacBook Pro&#xff0c;chip 是 Apple M3 Pro&#xff0c;Memory是18GB&#xff0c;macOS是 Sonoma 14.6.1。 2. 修改chat输入框代码 目前RAGFlow前端的chat功能&#xff0c;输入的内容是单行的&#xff0c;不能主动使用Shift…

11.17【大数据】Hadoop【DEBUG】

列出hdfs文件系统所有的目录和文件 主节点上 子结点 是一样的 *为什么能登进 slave 02 的主机,但是 master 当中依然显示 slave 02 为 DeadNode?* hadoop坏死节点的重启_hadoop3 子节点重启-CSDN博客 注意hadoop-daemon.sh 实际上位于 Hadoop 的 sbin 目录中&#xff0c;而不…

网络测速工具

1. SPEEDTEST https://www.speedtest.net/ 2. 测速网 测速网 - 专业测网速, 网速测试, 宽带提速, 游戏测速, 直播测速, 5G测速, 物联网监测,Wi-Fi 7,Wi-Fi 6,FTTR,全屋Wi-Fi - SpeedTest.cn 3. 字节比特换算 bps&#xff08;bits per second&#xff09; 字节和比特的换算…

快速构建NLP理论知识体系

NLP理论知识体系 一句话解释NLPNLP模型及原理简述1、Rag 一句话解释NLP 如果我们要实现机器翻译、情感分析、问答系统、文本摘要、聊天机器人、构造智能化的辅助文件填写模板&#xff0c;NLP可以通过现成的模型对输入的语音、文字、图片进行处理&#xff08;分词、标词性、去停…

AI - RAG中的状态化管理聊天记录

AI - RAG中的状态化管理聊天记录 大家好&#xff0c;今天我们来聊聊LangChain和LLM中一个重要的话题——状态化管理聊天记录。在使用大语言模型(LLM)的时候&#xff0c;聊天记录&#xff08;History&#xff09;和状态&#xff08;State&#xff09;管理是非常关键的。那我们先…

【AI学习】Mamba学习(二十):Mamba是一种线性注意力

论文《Demystify Mamba in Vision: A Linear Attention Perspective 》从线性注意力的视角&#xff0c;对Mamba 进行了阐释。 论文名称&#xff1a;Demystify Mamba in Vision: A Linear Attention Perspective (Arxiv 2024.05) 论文地址&#xff1a;https://arxiv.org/pdf/24…