- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
神经网络模型搭建与参数优化4.5
4.5神经网络模型搭建与参数优化下面使用已经掌握的知识,以简单、快捷的方式搭建一个基于PyTorch框架的神经网络模型,同时让模型参数的优化方法趋于高效。搭建神经网络模型的具体代码如下,这里会将完整的代码分成几部分进行详细介绍,以便于读者理解。代码的开始处是相关包的导入:
先通过import导入必要的包。例如,导入torch.autograd包来完成网络自动梯度过程,然后定义4个整型变量,其中,batch_n是在一个批次中输入数据的数量,值是100,这意味着在一个批次中输入100个数据,同时,每个数据包含的数据特征有input_data个,即每个数据的数据特征就是1000个;hidden_layer用于定义经过隐藏层后保留的数据特征的个数,这里有100个,因为模型只考虑一层隐藏层,所以在代码中仅定义了一个隐藏层的参数;output_data是输出的数据,值是10,可以将输出的数据看作一个分类结果值的数量,数字10表示最后要得到10个分类结果值。一个批次的数据从输入到输出的完整过程:先输入100个具有1000个特征的数据,经过隐藏层的线性变换和激活函数后变成100个具有100个特征的数据,再经过输出层后输出100个具有10个分类结果值的数据,在得到输出结果之后计算损失并进行反向传播,这样一次模型的训练就完成了,然后循环这个流程就可以完成指定次数的训练,并达到优化模型参数的目的,如图4-10所示。4.5神经网络模型搭建与参数优化
4.5神经网络模型搭建与参数优化
下面看看如何完成从输入层到隐藏层、从隐藏层到输出层的权重初始化定义工作,这里仅定义了输入和输出的x和y变量,这与下面在代码中使用的torch.nn包中的类有关,这些类能够帮助人们自动生成和初始化对应维度的权重参数,而不需要自己另外定义权重参数。具体代码如下:4.5神经网络模型搭建与参数优化
torch.nn.Sequential括号内的内容就是搭建的神经网络模型的具体结构,这里首先通过torch.nn.Linear(input_data,hidden_layer)完成从输入层到隐藏层的线性变换,然后经过激活函数torch.nn.Linear(hidden_layer,output_data)完成从隐藏层到输出层的线性变换。接下来对已经搭建好的模型进行训练并对参数进行优化,具体代码如下:4.5神经网络模型搭建与参数优化
这里将训练次数epoch_n设为20次,将学习速率learning_rate设置为0.0001,使用torch.nn包中已经定义好的均方误差函数类torch.nn.MSELoss来计算损失值(可根据具体任务自行替换为torch.nn.L1Loss、torch.nn.CrossEntropyLoss等损失函数)。同时这里使用了torch.optim包中的torch.optim.Adam类作为模型参数的优化函数,在torch.optim.Adam类中输入的是被优化的参数和学习速率的初始值,如果没有输入学习速率的初始值,那么默认使用0.0001这个值。因为需要优化的是模型中的全部参数,所以传递给torch.optim.Adam类的参数是models.parameters。另外,Adam优化函数还有一个强大的功能,就是可以对梯度更新使用到的学习速率进行自适应调节,所以最后得到的结果自然会比之前的代码更理想。进行模型训练的代码如下:4.5神经网络模型搭建与参数优化
4.5神经网络模型搭建与参数优化
以上代码通过最外层的一个大循环来保证模型可以进行20次训练,循环内的是神经网络模型具体的前向传播代码和后向传播代码,参数的优化和更新使用优化算法来完成。模型通过“y_pred=model(x)”来完成对模型预测值的输出(前向传播),在得到了预测值后就可以使用预测值和真实值来计算误差值。我们用loss来表示误差值,对误差值的计算使用了均方误差函数。我们采用loss.backward函数实现后向传播计算部分,这个函数的功能在于让模型根据计算图自动计算每个节点的梯度值并根据需求进行保留。此外,模型使用了Adam优化算法,所以通过直接调用optimzer.zero_grad来完成对模型参数梯度的归零(防止梯度被一直累加);并在以上代码中增加了optimzer.step,它的主要功能是使用计算得到的梯度值对各个节点的参数进行梯度更新。这里只进行20次训练并打印每轮训练的loss值,结果如下:4.5神经网络模型搭建与参数优化
4.5神经网络模型搭建与参数优化
4.5神经网络模型搭建与参数优化
可以看到,使用torch.optim.Adam类进行参数优化后仅仅进行了20次训练,loss值就迅速
您可能关注的文档
- 计算机视觉应用--模型压缩.pptx
- 计算机视觉应用--目标跟踪.pptx
- 计算机视觉应用--目标检测.pptx
- 计算机视觉应用--迁移学习.pptx
- 计算机视觉应用--人体姿态估计.pptx
- 计算机视觉应用--深度估计.pptx
- 计算机视觉应用--使用PIL处理图像.pptx
- 计算机视觉应用--图像分割.ptx.pptx
- 计算机视觉应用--图像分类.pptx
- 计算机视觉应用--图像增强.pptx
- 220kV变电站主变压器泡沫喷淋灭火系统防误动控制方案研究.docx
- 2024消防水泵房施工方案.docx
- 密闭电石炉净化系操作说明--课件.ppt
- 小儿大动脉炎的科普知识.pptx
- 【备战25年高考数学】题型06 7类三角函数与三角恒等变换解题技巧(原卷版).docx
- 【备战25年高考数学】题型06 7类三角函数与三角恒等变换解题技巧(原卷版) (2).docx
- 2011年高考数学试卷(理)(天津)(空白卷).docx
- 【备战25年高考数学】题型08 10类球体的外接球及内切球解题技巧(解析版).docx
- 【备战25年高考数学】题型09 6类圆锥曲线离心率解题技巧(解析版).docx
- 【备战25年高考数学】题型08 10类球体的外接球及内切球解题技巧(原卷版).docx
文档评论(0)