深度学习基础与实践 教案8.5任务实施(操作参考)_第1页
深度学习基础与实践 教案8.5任务实施(操作参考)_第2页
深度学习基础与实践 教案8.5任务实施(操作参考)_第3页
深度学习基础与实践 教案8.5任务实施(操作参考)_第4页
深度学习基础与实践 教案8.5任务实施(操作参考)_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

8.5任务实施8.5.1任务书本任务预测国际航空乘客所使用的神经网络为LSTM,主要是解决长序列训练过程中的梯度消失和梯度爆炸问题。操作要求:读取准备好的国际航空乘客数量数据;对数据进行预处理;对现有的国际航空乘客建立LSTM神经网络;进行预测;输出预测结果;预测结果与实际结果对比图。8.5.2任务分组表8-2学生任务分配表班级组号指导老师组长学号成员数量组长任务组长得分组员姓名学号任务分工组员得分8.5.3获取信息引导问题1:了解关于时间序列问题可应用的场景还有哪些。深度学习中的时间序列可以应用于以下场景:1.语音识别:语音是一种时间序列信号,深度学习中的循环神经网络(RNN)可以用于语音信号的特征提取和语音识别任务。2.自然语言处理:文本也可以看作是一个时间序列,深度学习中的RNN和长短时记忆网络(LSTM)可以用于文本分类、机器翻译等任务。3.信号处理:信号处理涉及到时间序列数据的分析和处理,包括图像处理、音频处理和视频处理等领域。4.金融市场预测:深度学习中的RNN和卷积神经网络(CNN)可以用于预测股票价格、汇率、商品价格等金融市场指标。5.医疗健康:深度学习中的RNN可以用于病人的疾病预测和诊断,还可以用于心电图和脑电图等医疗信号的分析和处理。6.动态系统建模:深度学习中的RNN和LSTM可以用于模拟和预测动态系统的演化,如天气模拟、气候模拟和交通流量模拟等。总之,深度学习中的时间序列可以应用于很多领域,帮助人们更好地理解和预测时间相关的数据,并提高各种任务的准确性和效率。引导问题2:回忆LSTM结构的三个控制门是如何实现的,并思考为什么能解决RNN梯度消失的问题?LSTM(长短时记忆)结构包含三个控制门:遗忘门、输入门和输出门。遗忘门是一个Sigmoid函数,它决定了哪些信息要被保留,哪些信息应该被遗忘。输入门也是一个Sigmoid函数,它确定哪些信息需要更新到细胞状态中。输出门是另一个Sigmoid函数,它确定了哪些信息来自细胞状态需要传递到输出。LSTM通过引入这些控制门来解决RNN的梯度消失问题。在传统的RNN中,反向传播算法会导致梯度消失或梯度爆炸的问题,因为根据链式法则,每一层的梯度都需要乘以来自更深层的梯度。在LSTM中,控制门可以让模型更加有效地决定哪些信息需要保留和更新,从而减轻了梯度消失和梯度爆炸的问题。此外,LSTM还可以防止长序列中的信息丢失,使得模型能够更好地处理长期依赖性。8.5.4工作实施引导问题3:请按照下面的实验步骤完成创建实验检测路径、文件和数据集的操作。(1)创建实验检测路径。在实验环境的桌面右键单击“创建文件夹(F)…”,输入文件夹名称为“test9”,后期所有项目文件都将保存至该文件夹。(2)创建实验文件和数据集。运行Pycharm软件,打开“test9”项目文件夹并在文件夹下创建“LSTM_pre_airplanpath.py”文件。将数据集文件international-airline-passengers.csv存放到“test9”文件夹中,如图8-30所示。图8-30实验文件和数据集引导问题4:请在“LSTM_pre_airplanpath.py”文件中编辑代码,实现引用包的导入:导入处理数据的numpy包和pandas包,导入人工神经网络的相关包pytorch,最后导入生成图像的包,请完成横线处对代码的注释。导入引用包的具体操作代码:importnumpyasnp importpandasaspdimportmatplotlib.pyplotasplt#导入matplotlib的pyplot子库,命名为pltimporttorch#导入PyTorch库中的函数和类fromtorchimportnn#导入torch.nn模块用于构建神经网络模型fromtorch.autogradimportVariable#导入torch.autograd中Variable模块torch.tensor引导问题5.请在“LSTM_pre_airplanpath.py”文件中编辑代码,实现数据的预处理,请完成横线处补充完成代码或对代码注释。预处理数据的具体操作代码:data_csv=pd.read_csv('./international-airline-passengers.csv',usecols=[1])#读入数据#读取完数据后,清洗掉有缺失的数据,然后读取每一条数据的值,并且将其转化为float型data_csv=data_csv.dropna()#滤除缺失数据dataset=data_csv.values#获得csv的值dataset=dataset.astype('float32')#获取所有数据中的最大值以及最小值,然后求出最大值与最小值的差值max_value=np.max(dataset)#获得最大值min_value=np.min(dataset)#获得最小值scalar=max_value-min_value#获得间隔数量#对数值进行归一化dataset=list(map(lambdax:x/scalar,dataset))#归一化#对输入集以及输出集进行初始化,设置一个值look_back,然后将前look_back个数据以及后look_back个数据剔除掉,将剩下的数据加入到两个数据集defcreate_dataset(dataset,look_back=2):dataX,dataY=[],[]foriinrange(len(dataset)-look_back):a=dataset[i:(i+look_back)]dataX.append(a)dataY.append(dataset[i+look_back])returnnp.array(dataX),np.array(dataY)#创建好输入输出data_X,data_Y=create_dataset(dataset)#划分训练集和测试集,70%作为训练集,其余的数据集作为测试集train_size=int(len(data_X)*0.7)test_size=len(data_X)-train_sizetrain_X=data_X[:train_size]train_Y=data_Y[:train_size]test_X=data_X[train_size:]test_Y=data_Y[train_size:]#将所有的数据集重塑为三维数据,并且将三维数据转化为PyTorch中适用的张量train_X=train_X.reshape(-1,1,2)train_Y=train_Y.reshape(-1,1,1)test_X=test_X.reshape(-1,1,2)train_x=torch.from_numpy(train_X)train_y=torch.from_numpy(train_Y)test_x=torch.from_numpy(test_X)#完成所有的三维数据转换为张量引导问题6.请在“LSTM_pre_airplanpath.py”文件中编辑代码,实现神经网络的创建,创建神经网络的方法同样是对nn.Module进行继承重写,请完成横线处补充完成代码或对代码注释。创建神经网络具体操作代码:#重写__init__()方法,用到LSTM神经网络classlstm(nn.Module):def__init__(self,input_size=2,hidden_size=4,output_size=1,num_layer=2):super(lstm,self).__init__()self.layer1=nn.LSTM(input_size,hidden_size,num_layer)self.layer2=nn.Linear(hidden_size,output_size)#重写forward()方法defforward(self,x):x,_=self.layer1(x)s,b,h=x.size()x=x.view(s*b,h)x=self.layer2(x)x=x.view(s,b,-1)returnx#根据新建的神经网络创建一个modelmodel=lstm(2,4,1,2)#使用torch.nn.MSELoss()来计算损失值,并且使用Adam优化算法criterion=nn.MSELoss()optimizer=torch.optim.Adam(model.parameters(),lr=1e-2)引导问题7.请在“LSTM_pre_airplanpath.py”文件中编辑代码,使用一个循环结构来训练,上限为30000次,请完成横线处补充完成代码或对代码注释。开始训练具体操作代码:#训练前要使用torch.autograd.Variable()函数对张量进行封装,预测值与实际值都要进行封装foreinrange(10000):var_x=Variable(train_x)var_y=Variable(train_y)#前向传播,使用之前得到model来进行训练,并且计算损失值out=model(var_x)loss=criterion(out,var_y)#反向传播,计算输出节点的总误差,并将误差用反向传播算法传播回网络,计算梯度,使用Adam算法调整optimizer.zero_grad()loss.backward()optimizer.step()#每训练100次输出结果if(e+1)%100==0:#每100次输出结果print('Epoch:{},Loss:{:.5f}'.format(e+1,loss.item()))引导问题8.请在“LSTM_pre_airplanpath.py”文件中编辑代码,利用后30%的数据进行测试,请完成横线处补充完成代码或对代码注释。转换成测试模式具体操作代码:model=model.eval()#转换成测试模式data_X=data_X.reshape(-1,1,2)data_X=torch.Tensor(data_X)var_data=Variable(data_X)pred_test=model(var_data)#测试集的预测结果#改变输出的格式pred_test=pred_test.view(-1).data.numpy()引导问题9.请在“LSTM_pre_airplanpath.py”文件中编辑代码,实现实际结果和预测结果的函数图像输出,请完成横线处补充完成代码或对代码注释。输出结果的具体操作代码:z=[]foriinrange(112,142):z.append(i)z=np.array(z)#画出实际结果和预测的结果plt.plot(z,pred_test[112:142],'r',label='prediction')plt.plot(dataset,'b',label='real')plt.legend(loc='best')plt.show()plt.savefig('./picture.png')引导问题10.运行“LSTM_pre_airplanpath.py”程序,大概会需要十分钟左右,通过多次测试,得到结果并分析结果。实验结果:结果分析:随着训练的次数越多,预测结果更加准确。8.5.5评价反馈全面考核学生的专业能力和关键能力,采用过程性评价和结果评价相结合,定性评价与定量评价相结合的考核方法。注重学生动手能力和在实践中分析问题、解决问题能力的考核,在学习和应用上有创新的学生给予特别鼓励。小组总评成绩为“自评+互评+师评”按比例折算的成绩再加上附加分,自评、互评和师评所占比例可以由教师根据具体情况自行制定。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论