人工智能开发框架应用 课后练习题及答案 项目6_第1页
人工智能开发框架应用 课后练习题及答案 项目6_第2页
人工智能开发框架应用 课后练习题及答案 项目6_第3页
人工智能开发框架应用 课后练习题及答案 项目6_第4页
人工智能开发框架应用 课后练习题及答案 项目6_第5页
全文预览已结束

付费下载

下载本文档

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

文档简介

项目6基于LSTM实现股票价格预测一、简答题1.简述循环神经网络的应用场景。2)语音识别:循环神经网络在语音识别领域广泛应用。2.简述与传统循环神经网络相比,LSTM具有哪些优势。与传统的循环神经网络(RNN)相比,长短期记忆网络(LSTM)具有以下几个显著的优势:1)处理长期依赖性:LSTM通过引入门控机制,能够更好地处理长期依赖性,避免梯度消失和梯度爆炸问题,从而更有效地捕捉和利用时间序列中的长期依赖信息。2)LSTM中引入了输入门、遗忘门和输出门等门控结构,能够自适LSTM能够更好地保持和更新长期记忆,同时防止过度记忆或遗忘。4)LSTM通过遗忘门和输入门的控制,能够自适应地处理总之,相较于传统的循环神经网络,LSTM通过引入门控结构,能够更好地处理长期依二、实操题1.6.1、6.26.3LSTM模型实现股票价格预测模型的搭建和训练。6.1、6.26.3实施,核心代码如下:importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimporttorchfromtorch.utils.dataimportDataset,DataLoaderimporttorch.nnasnnimportpickle#300DataFramedfdfpd.read_csv('../data/stock_price.csv')#构建数据集defgetData(df,column,train_end=-300,days_before=7,return_all=True,generate_index=False):'''读取原始数据,并生成训练样本df :原始数据column :要处理的列train_end :训练集的终点days_before :设置历史天数return_all :是否返回所有数据,默认generate_index :是否生成索引'''#datetimeindexdf['datetime'pd.to_datetime(df['datetime'])df=df.set_index('datetime')#生成仅包括column属性列的数据集series=df[column].copy()#划分数据为训练数据和测试数据train_series,test_series=series[:train_end],series[train_end-days_before:]#创建训练集train_data=pd.DataFrame()#通过滑动窗口,创建历史天数days_before天的数据foriinrange(days_before):#设置滑动窗口大小为7,步长为1,构建训练样本#c%d'%i为c开头的列标题,如c0、c1train_data['c%d'%i]=train_series.tolist()[i:-days_before+i]#获取对应的标签train_data['y']=train_series.tolist()[days_before:]#是否生成indexifgenerate_index:train_data.index=train_series.index[n:]ifreturn_all:returntrain_data,series,df.index.tolist()returntrain_data#调用getData函数,生成训练集、数据集及其索引train_data,all_series,df_index=getData(df,'high')#将数据集all_series转为numpy.ndarray类型all_series=np.array(all_series.tolist())#绘制沪深300指数原始数据的股票价格变化曲线plt.figure(figsize=(12,6))plt.plot(df_index,all_series,label='沪深300指数原始数据')plt.legend()plt.show()#定义数据集类classTrainSet(Dataset):definit(selfdata): #data#data取当天的前7天的数据,label取当天的数据self.data,self.label=data[:,:-1].float(),data[:,-1].float()defgetitem(self,index):returnself.data[index],self.label[index]”””

deflen(self):returnlen(self.data)数据归一化处理”””#将train_data转为numpy.array类型train_data_numpy=np.array(train_data)#计算数据集的平均值train_mean=np.mean(train_data_numpy)#计算均方误差train_std =np.std(train_data_numpy)#进行归一化处理train_data_numpy=(train_data_numpy-train_mean)/train_std#将train_data_numpy转为Tensor对象train_data_tensor=torch.Tensor(train_data_numpy)#创建数据集对象train_set=TrainSet(train_data_tensor)#创建Dataloader对象,对数据集对象进行加载train_loader=DataLoader(train_set,batch_size=10,shuffle=True)#LSTM网络类classLSTM(nn.Module):#构造方法初始化definit(self):super(LSTM,self).init()#定义LSTM网络self.lstm=nn.LSTM(input_size=1,hidden_size=64,num_layers=1,batch_first=True)#设置全连接输出层self.out=nn.Sequential(nn.Linear(64,1))#定义前向传播的计算过程defforward(self,x):#调用self.lstm构建LSTM网络#None表示LSMT隐藏层的初始参数h_0和c_0为全0的向量#h_n,c_n分别表示每层最后一个时间步的输出#r_out表示最后一层,每个时间步的输出hr_out,(h_n,c_n)=self.lstm(x,None)#取最后一天股票价格作为输出out=self.out(r_out[:,-1,:])returnout#创建LSTM实例lstm=LSTM()iftorch.cuda.is_available():lstm=lstm.cuda()#设置训练参数LR0.0001 #学习率EPOCH100 #训练次数#定义优化器为Adamoptimizer=torch.optim.Adam(lstm.parameters(),lr=LR)#定义损失函数为均方误差损失函数MSELossloss_func=nn.MSELoss()#在训练集上,进行EPOCH次训练forstepinrange(EPOCH):fortx,tyintrain_loader:#如果GPU可用,则将训练数据加载到GPU上iftorch.cuda.is_available():tx=tx.cuda()ty=ty.cuda()#语句1使用LSTM网络进行股票价格预测output=lstm(torch.unsqueeze(tx,dim=2))#语句2计算预测值与真实值之间的均方误差损失loss=loss_func(torch.squeeze(output),ty)#网络参数的梯度清

温馨提示

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

评论

0/150

提交评论