Pytorch LSTM模型 参数详解

article/2025/10/2 12:57:25

        本文主要依据 Pytorch 中LSTM官方文档,对其中的模型参数输入输出进行详细解释。

目录

基本原理

 模型参数 Parameters

 输入Inputs: input, (h_0, c_0)

 输出Outputs: output, (h_n, c_n)

变量Variables

备注


基本原理

        首先我们看下面这个LSTM图, 对应于输入时间序列中每个步长的LSTM计算。

对应的公式计算公式如下:

 

         其中 h_t 表示时刻 t 时刻的隐含状态,c_t 表示时刻 t 上的记忆细胞,x_t 表示时刻 t 的输入(对应于单个样本),h_{t-1}表示隐含层在时刻t-1的隐含状态或者是在起始时间o的初始隐含状态,i_t, f_t, o_t表示对应的输入、遗忘、 输出门。σ 表示的是sigmoid 函数,⊙ 表示哈达玛积(Hadamard product)。

        对于含多个隐含层的LSTM,第 l 层(l>=2)的输入x_t^{(l)}​ 则对应的是前一层的隐含状态h_t^{(l)}与丢弃dropout \delta_t^{(l-1)} 的乘积,其中每一个 \delta_t^{(l-1)}是Bernoulli随机变量(以参数dropout 的概率等于0)。

        如果参数指定proj_size > 0,则将对LSTM使用投影。他的运作方式包括以下几步。首先,h_t的维度将从hidden_size 转换为proj_size (W_{hi} 的维度也会同时被改变)。第二,每一个层的隐含状态输出将与一个(可学习)的投影矩阵相乘:h_t = W_{hr} * h_t 。注意,这种投影模式同样对LSTM的输出有影响,即变成proj_size. 

 模型参数 Parameters

  • input_size – 输入变量x的特征数量

  • hidden_size – 隐含层h的特征数量(即层中隐含单元的个数)

  • num_layers – 隐含层的层数,比如说num_layers =2, 意味着这是包含两个LSTM层,默认值:1

  • bias – 如果为False, 表示不使用偏置权重 b_ih 和 b_hh。默认值为:True

  • batch_first – 如果为True,则输入和输出的tensor维度为从(seq, batch, feature)变成 (batch, seq, feature)。 注意,这个维度变化对隐含和细胞的层并不起做用。参见下面的Inputs/Outputs 部分的说明,默认值:False

  • dropout – 如果非0,则会给除最后一个LSTM层以外的其他层引入一个Dropout层,其对应的丢弃概率为dropout,默认值:0

  • bidirectional – 如果为True,则是一个双向的(bidirectional )的LSTM,默认值:False

  • proj_size – 如果>0, 则会使用相应投影大小的LSTM,默认值:0

 输入Inputs: input, (h_0, c_0)

  • input:当batch_first = False 时形状为(L,N,H_in),当 batch_first = True 则为(N, L, H_in​) ,包含批量样本的时间序列输入。该输入也可是一个可变换长度的时间序序列,参见 torch.nn.utils.rnn.pack_padded_sequence() 或者是 torch.nn.utils.rnn.pack_sequence() 了解详情。

  • h_0:形状为(D∗num_layers, N, H_out),指的是包含每一个批量样本的初始隐含状态。如果模型未提供(h_0, c_0) ,默认为是全0矩阵。

  • c_0:形状为(D∗num_layers, N, H_cell), 指的是包含每一个批量样本的初始记忆细胞状态。 如果模型未提供(h_0, c_0) ,默认为是全0矩阵。

 其中:

        N = 批量大小

        L  = 序列长度

        D = 2 如果模型参数bidirectional = 2,否则为1

        H_in = 输入的特征大小(input_size)

        H_cell = 隐含单元数量(hidden_size)

        H_out = proj_size, 如果proj_size > 0, 否则的话 = 隐含单元数量(hidden_size)

 输出Outputs: output, (h_n, c_n)

  • output: 当batch_first = False 形状为(L, N, D∗H_out​) ,当batch_first = True 则为 (N, L, D∗H_out​) ,包含LSTM最后一层每一个时间步长 t 的输出特征(h_t)。如果输入的是torch.nn.utils.rnn.PackedSequence,则输出同样将是一个packed sequence。

  • h_n: 形状为(D∗num_layers, N, H_out​),包括每一个批量样本最后一个时间步的隐含状态。

  • c_n: 形状为(D∗num_layers, N, H_cell​),包括每一个批量样本最后一个时间步的记忆细胞状态。

变量Variables

  • ~LSTM.weight_ih_l[k] – 学习得到的第k层的 input-hidden 权重 (W_ii|W_if|W_ig|W_io),当k=0 时形状为 (4*hidden_size, input_size) 。 否则,形状为 (4*hidden_size, num_directions * hidden_size) 

  • ~LSTM.weight_hh_l[k] –学习得到的第k层的 hidden -hidden 权重(W_hi|W_hf|W_hg|W_ho), 想形状为 (4*hidden_size, hidden_size)。如果 Proj_size > 0,则形状为 (4*hidden_size, proj_size)

  • ~LSTM.bias_ih_l[k] – 学习得到的第k层的input-hidden 的偏置 (b_ii|b_if|b_ig|b_io), 形状为 (4*hidden_size)

  • ~LSTM.bias_hh_l[k] – 学习得到的第k层的hidden -hidden 的偏置  (b_hi|b_hf|b_hg|b_ho), 形状为 (4*hidden_size)

  • ~LSTM.weight_hr_l[k] – 学习得到第k层投影权重,形状为 (proj_size, hidden_size)。仅仅在 proj_size > 0 时该参数有效。

备注

  • 所有的权重和偏置的初始化方法均取值于:

         

  • 对于双向 LSTMs,前向和后向的方向分别为0 和1。当batch_first = False 时,对两个方向的输出层的提取可以使用方式:output.view(seq_len, batch, num_directions, hidden_size)。
  • 具体怎么使用,可以参考本人博文 从零开始实现,LSTM模型进行单变量时间序列预测
  • 关于LSTM模型的结构如果还有不清晰的可以参考这篇博客:Pytorch实现的LSTM模型结构


http://chatgpt.dhexx.cn/article/WnHbA6mb.shtml

相关文章

猿创征文丨深度学习基于双向LSTM模型完成文本分类任务

大家好,我是猿童学,本期猿创征文的第三期,也是最后一期,给大家带来神经网络中的循环神经网络案例,基于双向LSTM模型完成文本分类任务,数据集来自kaggle,对电影评论进行文本分类。 电影评论可以蕴…

LSTM模型参数解释

其中,input_size(输入张量x的维度)6,hidden_size(隐藏层的维度, 隐藏层的神经元个数)6,num_layer(隐藏层层数)2 train loss与test loss结果分析: train loss 不断下降,test loss不断下降,说明网…

【用pytorch进行LSTM模型的学习】

用pytorch进行LSTM模型的学习 LSTM模型用pytorch,采用LSTM对seaborn数据集做预测基本步骤数据的观察特殊数据处理数据归一化模型的构建与选择模型的保存 飞机航班流量预测示例 LSTM模型 LSTM模型长下面这样,主要用在时间序列的预测,具有比RN…

LSTM模型预测新冠

LSTM是RNN的改进型,传统RNN模型会随着时间区间的增长,对早期的因素的权重越来越低,有可能会损失重要数据。而LSTM模型通过遗忘门、输入门、输出门三个逻辑,来筛选和保留数据。 原理详解可以参考如何从RNN起步,一步一步…

LSTM模型结构讲解

人类并不是每时每刻都从一片空白的大脑开始他们的思考。在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见词的理解来推断当前词的真实含义。我们不会将所有的东西都全部丢弃,然后用空白的大脑进行思考。我们的思想拥有持久性。 传统的神经网络…

LSTM 模型实践一

简单介绍 原因:普通的RNN(Recurrent Neural Network)对于长期依赖问题效果比较差,当序列本身比较长时,神经网络模型的训练是采用backward进行,在梯度链式法则中容易出现梯度消失和梯度爆炸的问题。 解决&…

理解LSTM模型

写在前面:这是翻译自colah的一篇博客,原文关于LSTM神经网络模型的理解写的非常直观、简单易懂,所以翻译过来帮助大家学习理解LSTM模型。 当然我不是按照原文一字不落的翻译,而是摘出其中对模型理解最有帮助的部分,然后…

LSTM模型预测时间序列(快速上手)

写在前面 LSTM模型的一个常见用途是对长时间序列数据进行学习预测,例如得到了某商品前一年的日销量数据,我们可以用LSTM模型来预测未来一段时间内该商品的销量。但对于不熟悉神经网络或者对没有了解过RNN模型的人来说,想要看懂LSTM模型的原理…

基于优化LSTM 模型的股票预测

LSTM自诞生以来,便以其在处理时间序列方面的优越性能在预测回归,语音翻译等领域广受青睐。今天,主要研究的是通过对LSTM模型的优化来实现股票预测。其实,关于股票预测,LSTM模型已经表现的相当成熟,然而&…

【机器学习】LSTM模型原理

文章目录 1. 序言2. RNN的基本概念与网络结构2.1 概念2.2 结构2.3 要素 3. LSTM的基本概念与网络结构3.1 概念3.2 结构3.3 要素 4. LSTM网络结构的说明5. 补充 1. 序言 临渊羡鱼不如归而结网 学习的目的是为了应用 2. RNN的基本概念与网络结构 LSTM是在RNN的基础上演进而来…

LSTM模型

LSTM比RNN复杂很多,RNN只有一个参数矩阵A,LSTM有4个(遗忘门,输入门,更新值,输出门) LSTM有一个非常重要的传输带Ct,过去的信息通过这个传输带送给下一时刻,不会发生太大变…

时间序列预测——LSTM模型(附代码实现)

目录 模型原理 模型实现 导入所需要的库 设置随机数种子 导入数据集 打印前五行数据进行查看 数据处理 归一化处理 查看归一化处理后的数据 将时间序列转换为监督学习问题 打印数据前五行 划分训练集和测试集 查看划分后的数据维度 搭建LSTM模型 得到损失图 模型…

phpstorm汉化操作

问题描述:如何进行phpstorm的汉化(原始为英文) 解决办法: 1.下载汉化包—resources_cn; 2.将汉化包添加到phpstorm文件夹下的lib文件夹内(其中的resources_en可以不删除); 3.重启Ph…

php 教程 phpstorm

目录 php开发流程 php 编辑工具 phpstudy phpstorm如何配置php环境 php 语言 什么是URI URL和URI差别: 一、HTTP和HTTPS的基本概念 经典类型和自定义 实现本机域映射​ php开发流程 1、下载php语言包 php作为一门语言,本身可以是一个纯绿色版的…

【PHP】Phpstorm环境配置与应用

一. Phpstorm环境配置 (1)点击左上端File,选择下拉框中的setting,进入环境配置页面,如下图 (2)如下图点击1处,选中下拉框中的Deployment,Type(图示2处),下拉框中选择Local or mounted folder …

PHP开发工具PhpStorm v2022.3——完全支持PHP 8.2

PhpStorm是一个轻量级且便捷的PHP IDE,其旨在提高用户效率,可深刻理解用户的编码,提供智能代码补全,快速导航以及即时错误检查。可随时帮助用户对其编码进行调整,运行单元测试或者提供可视化debug功能。 PhpStorm v20…

phpstorm10.0.3汉化方法:

PhpStorm10.0.3汉化方法: 1、安装原版PhpStorm10.0.3,在打开最新的PhpStorm10汉化包下载地址: http://pan.baidu.com/s/1bouoyF9 2、双击用压缩软件打开resources_cn.jar(注意是打开而不是解压出来),将下载的汉化包…

PHPSTORM 中文版/汉化 即常用快捷键和配置

PHPStorm配置和快捷键大全(最新版)支持Win和Mac http://blog.csdn.net/fenglailea/article/details/53350080 推荐 1.汉化/中文版 使用的是开源的,翻译的还好,因为是开源,有些人不自觉,在翻译过程中加入广告 开源汉化地址&…

phpstorm10安装并汉化

一、下载phpstorm 下载地址:https://pan.baidu.com/s/1R64ZROVP1ljGbYfCwWjwxA 二、一直点击下一步安装即可 注意:第3步的时候选择一下支持的后缀 三、安装完毕,进行汉化 1、来到安装目录,PhpStorm 10.0.3\lib 目录下 2、…

PhpStorm 中文设置教程

本文仅供学习交流使用,如侵立删!demo下载见文末 Pycharm中文设置教程 1.首先打开PhpStorm ,点击file-settings.找到plugins,搜索Marketplace,然后搜索chinese。 2.找到之后直接点击安装. 3.安装完成之后点击Restart。…