当前位置: 首页 > news >正文

淘金网站建设推广展示型网站与营销型网站

淘金网站建设推广,展示型网站与营销型网站,为什么要注册中文域名,临沂网站制作版权声明#xff1a;本文为博主原创文章#xff0c;如需转载请贴上原博文链接#xff1a;使用LSTM神经网络对股票日线行情进行回归训练#xff08;Pytorch版#xff09;-CSDN博客 前言#xff1a;近期在尝试使用lstm对股票日线数据进行拟合#xff0c;初见成型但是效果不…版权声明本文为博主原创文章如需转载请贴上原博文链接使用LSTM神经网络对股票日线行情进行回归训练Pytorch版-CSDN博客 前言近期在尝试使用lstm对股票日线数据进行拟合初见成型但是效果不甚理想过拟合/欠拟合原因可能有如下几点①前传网络的架构不够完善②网络参数组合不合理③使用CPU而非GPU进行的训练性能低导致效果不佳④Epoch数过少。暂且先记录验证结果以便后续做出相对应的调整完整代码见文末。 目录 〇、各依赖包版本 一、Pytorch中LSTM网络参数说明 二、网络结构构建及参数组合选择 2.1 网络结构构建 2.2 参数组合选择 三、验证结果展示 3.1 优化器ADAMSGD的验证效果情况 3.2 Batch_Size64320的验证效果情况 3.3 num_layers1、2和dropout0、0.2、0.4的验证效果情况 参考文献 〇、各依赖包版本 mplfinance0.12.9b7 pandas1.1.5 SQLAlchemy1.4.41 SQLAlchemy_Utils0.41.2 tushare1.2.85 backtrader1.9.78.123 akshare1.10.42 torch1.13.1 numpy1.21.6 matplotlib3.5.3 一、Pytorch中LSTM网络参数说明 图1.1 lstm参数 具体参照LSTM其中bias和proj_size使用默认值其余参数可在代码中自行修改。 二、网络结构构建及参数组合选择 import torch# 选择在cpu或gpu上跑训练 device torch.device(cuda if torch.cuda.is_available() else cpu) # device torch.device(cuda:0) # 如果知道gpu有多少核可以直接指定# 如果只有cpu则以下代码可不执行 # 加载模型到device上 model SimpleLSTM() model.to(device)# 加载数据到device上 X, y X.to(device), y.to(device) 2.1 网络结构构建 LSTM网络核心的便是网络结构的构建参考网络上有关lstm网络的文章多数都是构建最普遍的网络结构如下 import torch.nn as nnclass SimpleLSTM(nn.Module):def __init__(self, INPUT_SIZE, HIDDEN_SIZE, OUTPUR_SIZE, NUM_LAYERS):super(SimpleLSTM, self).__init__()self.lstm nn.LSTM(INPUT_SIZE, HIDDEN_SIZE, NUM_LAYERS, batch_firstTrue)self.fc nn.Linear(HIDDEN_SIZE, OUTPUR_SIZE)self.sigmoid nn.Sigmoid()def forward(self, X):X, hidden self.lstm(X, None)X self.fc(X[:, -1, :])X self.sigmoid(X)return Xmodel SimpleLSTM(INPUT_SIZE, HIDDEN_SIZE, OUTPUR_SIZE, NUM_LAYERS) 通常这样的结构完全够用了但是为了方便后续能够对网络进行灵活的调整还是将隐藏状态h_0、h_n及单元状态c_0、c_n开放出来构建更加完整的网络结构同时对输入数据进行批标准化处理取消了对输出数据的非线性激活待后续研究后再考虑是否增加该层后续训练及验证都使用以下网络结构 import torch import torch.nn as nnclass SimpleLSTM(nn.Module):def __init__(self, INPUT_SIZE, HIDDEN_SIZE, OUTPUT_SIZE, NUM_LAYERS):super(SimpleLSTM, self).__init__()self.D 1if BIDIRECT:self.D 2self.h_0 torch.randn(self.D * NUM_LAYERS, BATCH_SIZE, HIDDEN_SIZE)self.c_0 torch.randn(self.D * NUM_LAYERS, BATCH_SIZE, HIDDEN_SIZE)self.h_n torch.zeros(self.D * NUM_LAYERS, BATCH_SIZE, HIDDEN_SIZE)self.c_n torch.zeros(self.D * NUM_LAYERS, BATCH_SIZE, HIDDEN_SIZE)self.lstm nn.LSTM(INPUT_SIZE, HIDDEN_SIZE, NUM_LAYERS, batch_firstBATCH1ST, dropoutDROPOUT, bidirectionalBIDIRECT)self.fc nn.Linear(HIDDEN_SIZE * self.D, OUTPUT_SIZE)self.bn nn.BatchNorm1d(num_featuresWINDOW_SIZE)def forward(self, input_, h_0, c_0):input_ self.bn(input_)x, (h_n, c_n) self.lstm(input_, (h_0, c_0))x self.fc(x)return x, (h_n, c_n)model SimpleLSTM(INPUT_SIZE, HIDDEN_SIZE, OUTPUT_SIZE, NUM_LAYERS) 2.2 参数组合选择 # 定义固定超参其中SHUFFLE、BIDIRECT可不开放出来直接使用默认参数 STOCK_TSCODE 000001.SZ # 平安YH# DATA parameters TRAIN_SCALE 0.8 # 训练集和测试/验证集比例8:2 WINDOW_SIZE 1000 # DATALOADER parameters SHUFFLE False # 对于有序的数据每个Epoch不需要打乱 DROP_LAST True # 对于含有初始隐藏状态h_0及初始单元状态c_0的网络将多于的数据舍弃以便能完成训练对于数据形式不规整的数据集可以构建不含有h_0和c_0的网络结构或者修改TRAIN_SCALE比例亦或将测试/验证集的数据量固定使得全部数据得以测试、验证# train patameters EPOCHS 1 # 只训练一个Epoch LEARNING_RATE 1e-2 MOMENTUM 0.9# lstm parameters INPUT_SIZE 1 HIDDEN_SIZE 128 OUTPUT_SIZE 1BATCH1ST True # 将batch_size参数置于首位 BIDIRECT False # 不使用双向网络 # 定义可变超参 LSTM parameters可以通过修改以下参数来调整网络的训练效果注释中提供2~3中参数可供选择 OPTIM_NAME # ADAM、SGD BATCH_SIZE 64 # 64、320 NUM_LAYERS 2 # 1、2 DROPOUT 0.2 # 0、0.2、0.4 *当SHUFFLETrue时会将时序的数据打乱起到反作用 *当BIDIRECTTrue时会消耗大量内存用cpu跑训练不建议设置为True且对于某些类型的网络并不需要使用双向网络模型故虽然开放该参数但仅给一个拟合结果以作对比见图2.1其余需自行训练 图2.1 BIDIRECTTrue的训练模型拟合验证效果 根据上述可变超参对于同一种网络结构一共可以组成4种属性共24种不同的组合如下表2-1所示 表2-1 参数组合 lstm modelnum_layersbatch_sizedropoutoptim_namelstm(input, (h_0, c_0))1、264、3200、0.2、0.4Adam、SGD 后续所有验证结果图片名称都是以各参数名称及数值来命名的范例如下 lstm_model_BS64_EP1_NL1_DO0_OPADAM_DLTrue_BDFalse                         |        |        |        |               |              |           |                         |   Epoch    |   dropout        |              |   bidirectional                 batch_size         |                 optimizer       |                                  num_layers                        drop_last 三、验证结果展示 下表3-1给出24种参数组合的验证结果这24种验证结果使用的是都只经过一次训练的模型即这些模型只经过一个Epoch的训练不排除经过多次训练后的模型得出的验证效果会和下表呈现出不同的情况 表3-1 24种参数组合验证效果 num_layersbatch_sizedropoutoptim_name拟合效果1640ADAM√1640.2ADAM√1640.4ADAM√13200ADAM×13200.2ADAM×13200.4ADAM×2640ADAM√2640.2ADAM√2640.4ADAM√23200ADAM×23200.2ADAM×23200.4ADAM×1640SGD×1640.2SGD×1640.4SGD×13200SGD×13200.2SGD×13200.4SGD×2640SGD×2640.2SGD×2640.4SGD×23200SGD×23200.2SGD×23200.4SGD× 3.1 优化器ADAMSGD的验证效果情况 从上表可见ADAM比SGD的效果更好这也很符合优化器进化的顺序。在12种优化器是SGD的验证结果中选出效果最好的一种如图3.1所示蓝色点是收盘价橙色线是预测值相差很远这样的结果也很难运用在后面的策略中。但即便这样也不能完全说SGD不好因为只跑了一个回合跑多一些回合效果可能会变好甚至特定时候会超过多回合的ADAM这得需要各位自己试验了。至此后续仅针对ADAM优化器进行讨论。 图3.1 优化器为SGD的训练模型的验证效果 3.2 Batch_Size64320的验证效果情况 从表3-1可见即便优化器是ADAMbatch_size320的效果也没有batch_size64的效果好如图3.2所示欠拟合的情况很明显当然batch_size的选择还要根据机器的性能来设置或许batch_size32的效果比64更好。 图3.2 batch_size为320的训练模型的验证效果 3.3 num_layers1、2和dropout0、0.2、0.4的验证效果情况 剩下的参数组合见图3.3共三行两列6张图左列num_layers1右列2自上而下dropout0、0.2、0.4当lstm只有一层左列波动很大DO0预测值和实际值贴合很近过拟合DO0.2欠拟合情况较为明显而当lstm有两层的时候预测的较大值和较小值均在实际值范围内算是预测较准确的但是局部依旧存在过拟合的情况还达不到制定策略的要求。 图3.3 多种参数组合验证效果对比 至此lstm网络的训练基本完成但过拟合的问题尚未解决且并不能通过控制DROPOUT系数来完全避免后续可以尝试构建更深层的网络结构或尝试使用GRU来看是否有所改善。 相关代码见demo_lstm_model.py同目录下的data文件夹保存了全部24种参数组合的训练模型一个Epochlstm(input, (h_0, c_0))文件夹下保存了“ADAM”和“SGD”共24张验证结果图片。 参考文献 1.基于深度学习的股票预测完整版有代码 2.【python量化】基于backtrader的深度学习模型量化回测框架 3.AI金融利用LSTM预测股票每日最高价
http://www.zqtcl.cn/news/312733/

相关文章:

  • 大学网站建设排名金乡网站建设
  • 手机网站开发步骤徐州网站制作怎么做
  • 南通网站优化找哪家推荐做素菜的网站
  • 中国十大网站域名界面设计最好的网站
  • 苍山做网站北京便宜网站建设
  • 广州公司网站制作招聘信息汕头网站推广哪家好
  • 登录建设官方网站品牌营销专家
  • 天津模板建站哪家好wordpress标题换行显示不全
  • 杭州房地产网站建设网站建设开发公司推荐指数
  • 建设部网站上怎样查询企业业绩做淘宝联盟网站要多少钱
  • 宣武上海网站建设网站导购话术
  • 天津北京网站建设公司大网站建设公司
  • 网站需要在哪些方面备案百度云建网站
  • 西安手机网站定制网站建设西安网站注册
  • 怎么做秒赞网站企业自己建设的营销网络
  • 一般网站建设需求有哪些wordpress脚注更改
  • 海报设计在线生成免费网站排名优化方案
  • 网站开发综合设计报告怎么制作浏览器网页
  • 做网站打广告青岛网站营销推广
  • 网站建设中首页模板本科 网站建设的基础教程
  • 推广网站优化seo教程上排名抖音营销
  • 创业园区网站建设wordpress对接公众号源码
  • 怎么设计公司的网站长沙seo结算
  • 参加网站建设项目人员保障体系镇江网站建设门户报价
  • 漯河网站优化景区网站建设方案
  • 辽宁智能网站建设价位wordpress 公司主题
  • zencart 网站入侵冲电气软件 网站建设
  • 在网上做黑彩网站会怎样wordpress自定义代码在哪里设置
  • 福州营销网站建设老品牌网站开通
  • 电子商务网站体系结构有哪些?网站开发规划书怎么写