版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
14蜜源指数预测系统MLP模型构建学习目标掌握MLP模型构建思想;掌握损失函数和优化算法的使用方法132知识思政技能能基于Pytorch搭建MLP模型会训练MLP模型培养学生科学探索精神逻辑思维能力设计步骤蜜源地指数预测系统先读取csv格式的训练集,然后对数据进行归一化处理,第三步搭建深度神经网络MLP模型,并应用深度学习优化算法训练出最优模型,最后应用最优模型预测蜜源地指数。具体设计步骤如图所示。二、
构建MLP模型深度学习是基于数据驱动的学习。首先分析数据的特点。蜜源地数据特征维度为13,训练集共6000行。依据数据特点,从深度学习模型中选择MLP作为本次系统的模型。首先训练一个MLP,输入层为13个神经元(与输入特征维度数对应),隐层为10个神经元,输出层为1个神经元。网络结构图如图所示。二、
构建MLP模型pytorch中有两种定义网络的方式:Module以及Sequential。nn.Sequential是将多个功能层连接在一起的函数,用来方便网络前向传播函数的定义。Module类是nn模块提供的一个模型构造类,是所有神经网络模块的基类,可以继承它来定义模型。建立MLP的代码思路为:定义一个继承Module的类叫MLPmodel,在类中构造模型。类中包含两个部分,一部分定义了网络结构,另一部分定义了网络结构的向前传播过程forward()函数。classMLPmodel(nn.Module):
def__init__(self)
super(MLPmodel,self).__init__()#定义隐藏层#nn.Sequential()将1个nn.Linear()层和1个nn.ReLU()层统一打包为self.hidden()层self.hidden=nn.Sequential(nn.Linear(13,10),#1个使用nn.Linear()定义的全连接层nn.ReLU()#
1个使用nn.ReLU()定义的激活函数层
)
self.regression=nn.Linear(10,1)#预测回归层
#定义网络的前向传播路径defforward(self,x):
x=self.hidden(x)#计算隐层
output=self.regression(x)#计算输出层
returnoutputnet=MLPmodel()#定义网络net二、
构建MLP模型损失函数(lossfunction)是用来度量模型的预测值与真实值的差异程度的函数,它是一个非负实值函数,损失函数越小,模型的鲁棒性就越好。损失函数主要用在模型的训练阶段,每个批次的训练数据送入模型后,通过前向传播输出预测值,然后损失函数计算出预测值和真实值之间的损失值。得到损失值之后,模型通过反向传播去更新各个参数,来降低真实值与预测值之间的损失,使得模型生成的预测值往真实值方向靠拢,从而达到学习的目的。深度学习中常用的损失函数有MSE均⽅误差损失函数、SVM合页损失函数、CrossEntropy交叉熵损失函数、SmoothL1损失函数等。均方根误差(MSE)是回归问题中最常用的损失函数之一。它是目标值与模型预测值之间差异的平方和的均值,用于衡量模型的预测值与真实值之间的平均差异。根据本系统实现的预测目标以及所用蜜源地数据的特点,在以上几种损失函数中,选择MSE均⽅误差损失函数。三、
定义损失函数在Pytorch中实现MSE均⽅误差很方便,只需要一句代码:loss=nn.MSELoss()便创建了一个Loss对象。上节课详细讲了深度学习优化算法。本系统先尝试选用随机梯度下降算法SGD,设置学习率为0.003,训练建立好的MLP网络。在Pytorch中使用优化算法比较便捷,直接调用torch.optim模块中相应的优化函数即可,代码如下:trainer=torch.optim.SGD(net.parameters(),lr=0.003)SGD函数的参数分别为待优化的网络参数和学习率四、选用优化算法五、训练模型设置好网络结构、损失函数、优化算法后,就可以开始训练模型了。本系统设置训练轮数为200,先打印出均方误差。
num_epochs=200train_loss_all=[]#输出每个批次训练的损失函数forepochinrange(num_epochs):forX,yintrain_loader:#循环从train_loader取批量数据y_hat=net(X)#使用神经网络net计算预测值y_hatl=loss(y_hat,y))#使用loss对象计算损失值trainer.zero_grad()#在每次l.backward()前都要trainer.zero_grad(),先把梯度清零l.backward()#通过进行反向传播来计算梯度trainer.step()#step()方法更新网络参数train_loss_all.append(l.item())#
item()方法取l张量里面的损失值print(‘epoch:’,epoch+1,‘loss:’,float(l.mean()))#打印每幕损失值打印出前45次误差如下:epoch:1loss:298140.09375epoch:2loss:284626.375epoch:3loss:272756.09375epoch:4loss:260120.203125epoch:5loss:245266.8125epoch:6loss:234951.296875epoch:7loss:226051.890625epoch:8loss:215238.953125epoch:9loss:205479.21875……epoch:40loss:44498.3515625epoch:41loss:43122.30859375epoch:42loss:42042.20703125epoch:43loss:39179.92578125epoch:44loss:38236.46875epoch:45loss:36747.26953125从数值看,第1轮训练误差为298140,第50轮是36747,没有收敛,说明模型不够好。五、训练模型根据以上均方误差数据,画出Loss曲线importmatplotlib.pyplotasplt#导入matplotlib中的pyplot模块plt.figure()#创建新的图形对象plt.plot(train_loss_all,"r-")
#plt.plot()函数绘制loss曲线plt.title(“TrainLossperiteration”)#设置曲线标题plt.show()#
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商洽合作项目预算分配事项(5篇)范文
- 合作项目启动会议时间及议程安排通知函4篇范本
- 文明礼仪伴我行品德修养励童心,小学主题班会课件
- 游戏设计师游戏策划与制作执行能力绩效考评表
- 行政助理绩效统计与分析表
- 智慧与分享:24小时成长小学主题班会课件
- 关于甲供应商资源调配的通知函5篇范文
- 石油化工工程师安全性能绩效衡量表
- 体育赛事策划活动负责人KPI考核表
- 中小学作业辅导方法手册
- 内河造船厂可行性研究报告
- 传统竹编制作方法及教学指导方案
- 电源基础知识培训资料课件
- 职业规划及心态培训课件
- 机电安装教学课件
- 2025年中考数学总复习《二次函数与反比例函数》专项检测卷(附答案)
- 婚前教育手册
- DL∕T 397-2010 电力地理信息系统图形符号分类与代码
- 全国疾病预防控制机构工作规范
- HGT 6332-2024《液体脲醛缓释肥料》
- 外科学 手术 基础
评论
0/150
提交评论