当前位置: 首页 > 网络应用技术

Pytorch学习系列教程:库存数据集中三个主要神经网络的实际战斗

时间:2023-03-07 15:49:27 网络应用技术

  指南:在最近几天的推文中,引入了深度学习中的三个主要神经网络-DNN,CNN和RNN。今天,本文以库存数据集为例,充当实际战斗和对其进行比较。

  不熟悉这三种类型的神经网络的读者,欢迎观看历史推文:

  Pytorch学习系列教程:深神经网络[DNN]

  Pytorch学习系列教程:卷积神经网络[CNN]

  Pytorch学习系列教程:圆形神经网络[RNN]

  DNN,CNN和RNN是深度学习中的三个经典神经网络。其中,DNN可以将历史序列特性转换为完整的连接网络,而CNN可以使用一个维度卷积特征来提取特征提取。RNN自然适合序列数据建模。

  比较三个主要神经网络预测效应

  本文的结构如下:

  此实际情况选择了库存数据,以及2005年1月至2021年7月的时间范围,总共有4027条记录,每个记录包括[开放,高,低,关闭,vol]一起5个功能字段。数据如下。:

  显然,每个字段的值范围不同。为了尽可能地适应神经网络中激活功能的最佳特征范围,需要执行特征场。这是Sklearn的MinMaxScarr。同时,为了确保在数据预处理过程中不会泄漏信息,仅在培训MinmaxScarar时才可以使用培训浓度记录。因此,这里基于此处。选择了8:2和800记录以提取测试集,并将先前的数据用作培训集。因此,请执行以下数据预处理:

  然后,在预处理后检查数据:

  显然,除了VOL列字段到[0,1]的数据范围外,其他四个字段的最大值超过1,因为测试浓度的数据范围大于训练浓度的数据范围,但是这甚至是实用培训的要求。

  然后,构建了数据集。由于是时间序列数据,我们的任务基于当前和历史数据。它预测第二天股票的收盘价(近距离字段)。构建数据集和标签列,施工过程如下:

  然后,训练集和测试集被切割。因为它是正时数据,因此只能将其分为顺序。在这里,使用了先前的设置,并选择了800个记录作为测试集。以前的培训集:

  在这一点上,数据集的准备和切割已经完成。注意,此处的数据集的维度为3,这意味着[批处理,seq_len,input_size],也就是说,[样本号,序列长度,特征长度,特征编号] .NEXT,使用三种类型的神经网络来建模。

  DNN是最早的神经网络,主要组成元素是几个完整连接的层和相应的激活功能。在为了加入多个矩的历史特征的完整连接训练,您需要首先将三个维输入数据弄平展示两个维度输入数据。这是[batch,seq_len,input_size]成为[batch,seq_len*input_size],然后您可以应用完整的连接模块。在这里,我们在DNN中添加了3个隐藏层,并遵循神经元的节奏,特别是,特别是DNN模型设计如下:

  然后,您可以开始培训。其中,模型优化器选择ADAM并保留0.001的默认学习率。损失功能用于使用MSLOSS。培训过程如下:

  总体而言,模型训练相对有效,损失很快下降。使用最终模型来预测测试集的输出并绘制控制曲线:

  看上去不错!

  CNN模型的核心元素是卷积和合并,因此在这里我们还将这两个模块应用于序列数据。值得注意的是,对于序列数据,应执行特征的特征数量,以及卷积的方向。滑动应在序列维度上。也就是说,我们应该首先将输入数据形状从[batch,seq_len,input_size]转换为[批处理,input_size,seq_len],然后应用一个维度卷积和一个维度合并层。我们首先在不失去普遍性的情况下,首先设置两个kernel_size = 3 conv1d和两个kernel_size = 2 avgpool1d,然后将功能展览转换为2维度。最后,获得了完整的连接。模型构建代码如下:

  接下来是培训过程。训练参数设置为DNN。代码和结果如下:

  绘制它以显示:

  看上去不错!

  RNN自然适合序列数据建模。在这里,我们选择gru练习,只选择最基本的gru结构,即num_layers = 1,双向= false。在最后一刻隐藏状态HN输出的基础上,使用完整的连接来获得预测输出。网络结构代码如下:

  RNN模型培训仍沿初步训练参数设置。培训过程和结果如下:

  查看输出并绘制预测结果曲线如下:

  先前的预测相对准确,但最终预测误差很大。这可能是由于测试集标签超过1的实际值所致,这种情况是该模型无法在培训集中学习的信息...

  最后,我们比较了股票预测任务中三个主要神经网络模型的性能。首先查看其各自预测结果的比较曲线:

  总体而言,在所有测试集中DNN和CNN的性能都比RNN好一些。然后比较评估指标和训练速度:

  好吧,DNN几乎显示出曲折的趋势 - 模型训练速度很快,预测结果很高!这通常可以反映出两个结论:

  上述案例和结论仅供参考!

  原始:https://juejin.cn/post/7095367940135976973