≡
  • 网络编程
  • 数据库
  • CMS技巧
  • 软件编程
  • PHP笔记
  • JavaScript
  • MySQL
位置:首页 > 网络编程 > Python

Pytorch实现LSTM时间序列预测的简单示例

人气:289 时间:2021-06-02

这篇文章主要为大家详细介绍了Pytorch实现LSTM时间序列预测的简单示例,具有一定的参考价值,可以用来参考一下。

感兴趣的小伙伴,下面一起跟随四海网的雯雯来看看吧!

开发环境说明:

Python 35

Pytorch 0.2

CPU/GPU均可

1、LSTM简介

人类在进行学习时,往往不总是零开始,学习物理你会有数学基础、学习英语你会有中文基础等等。

于是对于机器而言,神经网络的学习亦可不再从零开始,于是出现了Transfer Learning,就是把一个领域已训练好的网络用于初始化另一个领域的任务,例如会下棋的神经网络可以用于打德州扑克。

我们这讲的是另一种不从零开始学习的神经网络——循环神经网络(Recurrent Neural Network, RNN),它的每一次迭代都是基于上一次的学习结果,不断循环以得到对于整体序列的学习,区别于传统的MLP神经网络,这种神经网络模型存在环型结构,

具体下所示:

上图是RNN的基本单元,通过不断循环迭代展开模型如下所示,图中ht是神经网络的在t时刻的输出,xt是t时刻的输入数据。

这种循环结构对时间序列数据能够很好地建模,例如语音识别、语言建模、机器翻译等领域。

但是普通的RNN对于长期依赖问题效果比较差,当序列本身比较长时,由于神经网络模型的训练是采用backward进行,在梯度链式法则中容易出现梯度消失和梯度爆炸的问题,需要进一步改进RNN的模型结构。

针对Simple RNN存在的问题,LSTM网络模型被提出,LSTM的核心是修改了增添了Cell State,即加入了LSTM CELL,通过输入门、输出门、遗忘门把上一时刻的hidden state和cell state传给下一个状态。

如下所示:

遗忘门:ft = sigma(Wf*[ht-1, xt] + bf)

输入门:it = sigma(Wi*[ht-1, xt] + bi)

cell state initial: C't = tanh(Wc*[ht-1, xt] +bc)

cell state: Ct = ft*Ct-1+ itC't

输出门:ot = sigma(Wo*[ht-1, xt] + bo)

模型输出:ht = ot*tanh(Ct)

LSTM有很多种变型结构,实际工程化过程中用的比较多的是peephole,就是计算每个门的时候增添了cell state的信息,有兴趣的童鞋可以专研专研。

上一部分简单地介绍了LSTM的模型结构,下边将具体介绍使用LSTM模型进行时间序列预测的具体过程。

2、数据准备

对于时间序列,本文选取正弦波序列,事先产生一定数量的序列数据,然后截取前部分作为训练数据训练LSTM模型,后部分作为真实值与模型预测结果进行比较。正弦波的产生过程如下:

SeriesGen(N)方法用于产生长度为N的正弦波数值序列;

trainDataGen(seq,k)用于产生训练或测试数据,返回数据结构为输入输出数据。seq为序列数据,k为LSTM模型循环的长度,使用1~k的数据预测2~k+1的数据。

3、模型构建

Pytorch的nn模块提供了LSTM方法,具体接口使用说明可以参见Pytorch的接口使用说明书。此处调用nn.LSTM构建LSTM神经网络,模型另增加了线性变化的全连接层Linear(),但并未加入激活函数。由于是单个数值的预测,这里input_size和output_size都为1.

4、训练和测试

(1)模型定义、损失函数定义

(2)训练与测试

(3)结果展示

比较模型预测序列结果与真实值之间的差距

以上为个人经验,希望能给大家一个参考,也希望大家多多支持四海网。如有错误或未考虑完全的地方,望不吝赐教。

本文来自:http://www.q1010.com/181/18688-0.html

注:关于Pytorch实现LSTM时间序列预测的简单示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。

关键词:python

您可能感兴趣的文章

  • Python批量翻译英文Word文档并保留格式的简单示例
  • Python之高级用法详细示例
  • python处理emoji表情的简单示例
  • python某考试系统生成word试卷的简单示例
  • Python之pycharm利用pyspark远程连接spark集群的简单示例
  • Python之pytorch实现textCNN的简单示例
  • Python之keras训练数据的几种方式对比(fit和fit_generator)
  • python3使用 goto 跳转执行到指定代码行的简单示例
  • 解决安装pytorch时报sslerror错误的问题
  • python一秒搭建FTP服务器的简单示例
上一篇:Python之Keras中fit()和fit_generator()的区别及其参数的坑
下一篇:Python批量翻译英文Word文档并保留格式的简单示例
热门文章
  • Python 处理Cookie的菜鸟教程(一)Cookie库
  • python之pandas取dataframe特定行列的简单示例
  • Python解决json.dumps错误::‘utf8’ codec can‘t decode byte
  • Python通过pythony连接Hive执行Hql的脚本
  • Python 三种方法删除列表中重复元素的简单示例
  • python爬虫代码示例
  • Python 中英文标点转换示例
  • Python 不得不知的开源项目解析
  • Python urlencode编码和url拼接实现方法
  • python按中文拆分中英文混合字符串的简单示例
  • 最新文章
    • Python利用numpy三层神经网络的简单示例
    • pygame可视化幸运大转盘的简单示例
    • Python爬虫之爬取二手房信息的简单示例
    • Python之time库的简单示例
    • OpenCV灰度、高斯模糊、边缘检测的简单示例
    • Python安装Bs4及使用的简单示例
    • django自定义manage.py管理命令的简单示例
    • Python之matplotlib 向任意位置添加一个子图(axes)的简单示例
    • Python图像标签标注软件labelme分析的简单示例
    • python调用摄像头并拍照发邮箱的简单示例

四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。