序列预测LSTM

本文介绍了使用LSTM进行时间序列预测的方法,包括输入数据的两种处理方式:单条历史序列和多条短序列,详细阐述了数据预处理、模型训练和预测过程,以及预测效果的展示。
摘要由CSDN通过智能技术生成

参考:

使用LSTM进行简单时间序列预测(入门全流程,包括如何整理输入数据)_lstm预测_eecspan的博客-CSDN博客

请注意,虽然通常情况下张量的第一个维度是批次大小batch size,但是PyTorch建议我们输入循环网络的时候张量的第一个维度是序列长度,而第二个维度才是批次数量。

即: 输入LSTM的 input.size() == (seq_len, batch_size, inp_dim)

其中:seq_len:     时间序列的长度

           batch_size:同个批次中输入的序列条数

           inp_dim:       输入数据的维度,例如输入数据由【客流量,年份,月份】三组数据构成,则                                 inp_dim == 3

PyTorch中示例:

Examples::

        >>> rnn = nn.LSTM(10, 20, 2)
        >>> input = torch.randn(5, 3, 10)
        >>> h0 = torch.randn(2, 3, 20)
        >>> c0 = torch.randn(2, 3, 20)
        >>> output, (hn, cn) = rnn(input, (h0, c0))
class RegLSTM(nn.Module):
    def __init__(self, inp_dim, out_dim, mid_dim, mid_layers):
        super(RegLSTM, self).__init__()

        self.rnn = nn.LSTM(inp_dim, mid_dim, mid_layers)  # rnn
        self.reg = nn.Sequential(
            nn.Linear(mid_dim, mid_dim),
            nn.Tanh(),
            nn.Linear(mid_dim, out_dim),
        )  # regression

    def forward(self, x):
        y = self.rnn(x)[0]  # y, (h, c) = self.rnn(x)     
        seq_len, batch_size, hid_dim = y.shape
        y = y.view(-1, hid_dim)                           
        y = self.reg(y)                                   
        y = y.view(seq_len, batch_size, -1)               
        return y

    """
    PyCharm Crtl+click nn.LSTM() jump to code of PyTorch:
    Examples::
        >>> rnn = nn.LSTM(10, 20, 2)
       
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值