【LSTM】LSTM网络及参数学习笔记

 

图1 LSTM模型结构可视化 [6].
图2 LSTM cell结构说明
图3 LSTM cell和num_units说明 [4].
图4 LSTM的网络结构
1. LSTM
  • 是对一个LSTM层的抽象,可以看成是由多个LSTM cell组成,是包含时间步的一个网络
2. LSTM cell
  • 图2是LSTM在时间步上的结构,结合图3来理解LSTM cell的概念
  • 在时间步上cell_1->cell_2->cell_3->…只是一个cell在不同时刻的表现
  • 也就是说LSTM cell是某一时刻包含多个隐藏层神经元的结构
3. num_layers
  • 模型层数(隐藏层)

  • LSTM隐藏层/循环层的层数。如图1的隐藏层1和隐藏层2所示

  • LSTM结构的个数,即多少个LSTM结构的堆叠。如图2的layer1和layer2所示

  • num_layers默认是1,可以设置1~10

  • 整个LSTM网络就是: input -> LSTM结构 * n -> output

  • num_layers = hidden_num_layers

4. feature_size
  • 输入x的特征数,number of features in the input x
  • feature_size = input_size
5. input_size
  • 输入维度,输入x的特征数
  • input_size = feature_size
6. hidden_size
  • 隐藏层中隐藏神经元的个数,如图1和图3中所示
  • 隐藏层的特征维度,有多少个隐藏神经元就有多少个输出
  • 每个隐藏层隐藏节点/神经元个数可以不一样
7. num_units
  • 隐藏层神经元的个数,见图3所示
  • num_units = hidden_size
8. output_layer
  • 这里指的是还没有加入全连接层或者softmax等层

  • LSTM的输出是一个tuple元组

  • output后如果要接全连接层,那么全连接层的输入维度 = hidden_size

9. time_step
  • 时间步,即时间序列长度,见图1和图2中x_t的长度
  • number of frames, 帧数
  • time_step = sequence_length = 帧数
10. node_num
  • 图1中T=4,节点数为4
  • RNN/LSTM节点数node_num = 序列长度 = time_step = 帧数
11. seq_len
  • 从实际应用来理解,seq_len指时间序列的长度,目标的历史帧数
  • seq_len = 帧数 = time_step
12. num_directions
  • 1 - 单向LSTM
  • 2 - 双向LSTM
13. h_t, c_t
  • h是隐藏状态,表示短期记忆

  • c是细胞状态,表示长期记忆

  • h_t: t时刻的隐藏状态hidden state, h_n就是最后一个隐藏神经元的hidden state

  • c_t: t时刻的细胞状态cell state, c_n就是最后一个隐藏神经元的cell state

  • h_n/c_n的值和序列长度seq_len无关,和num_layers有关

14. output_size
  • 输出维度
  • 和隐藏层数num_layers无关,和序列长度seq_len和隐藏神经元的个数hidden_size有关
15. batch_size
  • batch: 每次载入一批数据叫一个batch
  • batch_size: 一批数据有多少个样本,比如batch_size = 32表示一次载入32个数据
  • batch_size: how many samples per batch to load
16. batch_first
  • data_loader的时候没有这个参数,模型定义的时候有这个参数

  • batch_first:数据组织的方式

    • batch_first = true:数据batch优先,也就是逐个目标序列的方式存储,如[[a_t1, a_t2, a_t3], [b_t1, b_t2, b_t3]]
    • batch_first = false:数据seq_len优先,也就是逐个时刻各个目标的方式存储,如[[a_t1, b_t1, c_t1], [a_t2_b_t2, c_t2], [a_t3, b_t3, c_t3]]
  • batch_first默认是false,pytorch的LSTM默认输入和输出都是batch_size在第二维,也就是优先按seq_len时间顺序排列数据,如下

  • batch_first默认为false是因为cudnn中rnn的api就是batch_size在第二维度,这也导致batch_first设置为true后训练速度可能会变慢

  • 【batch_first = true】

    input(batch, seq_len, input_size)
    output(batch_size, seq_len, hidden_size * num_directions)
    h0(num_layers * num_directions, batch_size, hidden_size)
    c0(num_layers * num_directions, batch_size, hidden_size)
    hn(num_layers * num_directions, batch_size, hidden_size)
    cn(num_layers * num_directions, batch_size, hidden_size)
    
  • 【batch_first = false】

    input(seq_len, batch, input_size)
    output(seq_len, batch_size, hidden_size * num_directions)
    h0(num_layers * num_directions, batch_size, hidden_size)
    c0(num_layers * num_directions, batch_size, hidden_size)
    hn(num_layers * num_directions, batch_size, hidden_size)
    cn(num_layers * num_directions, batch_size, hidden_size)
    
  • 从上面可以看出,batch_first影响input/output的数据格式,但是对h_t/c_t的格式却没有影响,可以实际打印shape看下

  • batch_first不同取值影响到如何寻址访问对应的数据,使用时需注意

 


【参考文章】
[1].batch_first参数
[2].batch_first参数的理解
[3].batch_first参数的理解
[4].LSTM架构详解
[5].LSTM"门"的原理解析
[6].LSTM模型结构可视化, 推荐
[7].RNN参数解释
[8].LSTM参数
[9].LSTM参数
[10].hidden_size的理解
[11].理解LSTM英文版

created by shuaixio, 2024.05.09

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/9383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【硬件开发】原型设计对于成功产品开发重要性及常见阶段

电子产品的设计与开发始于原型制作阶段。这些原型虽可能与最终产品极为相似,但总带有实验性质,因为电子原型的制作过程包括对新概念、新思想及新解决方案的测试。虽然存在出错的风险,跳过这一阶段可能会导致不必要的开支。不擅长电子硬件设计…

PELCO-D相机云台控制协议

pelco pelco D云台控制协议 参考手册 PELCO-D协议手册PELCO-D命令列表 PELCO-D格式 Pelco-D是由7个十六进制字节组成(除非另有说明,本页中使用的所有字节数据均为十六进制格式)。 Byte1Byte2Byte3Byte4Byte5Byte6Byte7Sync同步字节控制…

packageKit学习(一)

最近在学习packagekit,本系列主要讲述,如何使用packageKit接口。 1. 导入依赖 在使用packageKit 之前需要导入一些依赖和安装一些包,不然会报错,以下以报错信息讲解: cmakelist demo/updatesystemdemo/mainwindow.cpp…

element-ui 图片(图片压缩)与文件上传设置【添加请求头信息】

1.图片上传 <template><div><el-upload class"avatar-uploader" :action"upload /Api/upload" :show-file-list"false" :on-success"upSuccess":before-upload"beforeAvatarUpload" :on-exceed"handl…

2024年想要开一家抖音小店,需要多少钱?一篇详解!

大家好&#xff0c;我是电商糖果 随着抖音卖货的持续火爆&#xff0c;抖音小店也成了电商行业讨论度最大的项目之一。 不少朋友都想知道&#xff0c;如果今年开抖音小店大概需要多少钱。 糖果做小店的时间也比较长&#xff0c;也经营了多家小店。 对于开一家抖音小店需要多…

MADbench2

MADbench2 MADbench2是一款用于测试大规模并行架构的I/O、通信和计算子系统在真实科学应用压力下的综合性能的工具。 MADbench2 基于 MADspec 代码&#xff0c;该代码根据天空的噪声像素化图及其像素-像素噪声相关矩阵计算宇宙微波背景辐射的最大似然角功率谱。MADbench2 保留…

多规格产品应该如何设置呢?

今天一用户从供应商手中拿到产品价目表&#xff0c;但是设置起来蒙圈了&#xff0c;接下来我们就一起设置一下吧&#xff5e; 一、产品价格表 我们通过供应商手中拿到产品价目表是这个样子的&#xff1a; 我们可以看到此产品的销售客价根据不同地区导致的价格不同&#xff0…

ABAP小技巧汇总(自用)

1.TIMESTAMP搜索帮助 PARAMETERS:p_begin TYPE ty_screen-date_begiu MATCHCODE OBJECT cpe_timestamp, "开始时间戳p_end TYPE ty_screen-date_end MATCHCODE OBJECT cpe_timestamp. "结束时间戳 效果&#xff1a;

Git笔记-常用指令

Git笔记-常用指令 一、概述二、仓库管理二、缓存区操作1. 添加文件到缓存区2. 取消缓存文件3. 忽略列表 三、日志状态信息四、分支操作五、六、 一、概述 这里记录一些git常用的指令。 二、仓库管理 # 本地仓库初始化 git init# 克隆仓库 git clone git_url # git clone ht…

深入剖析Java的“幽灵之手“:NullPointerException的原因、解决与创意思考

1. 原因分析 java.lang.NullPointerException&#xff08;简称NPE&#xff09;是Java程序员在编程过程中经常会遇到的“幽灵之手”&#xff0c;它在毫无预警的情况下出现&#xff0c;让程序崩溃。NPE的根源在于尝试访问或修改一个null对象的成员或方法。以下是NPE出现的几个常…

怎么选择适合Selenium使用的网络代理

Selenium可以让你使用所有主流浏览器&#xff0c;访问你想测试的任何网站或服务。这种多功能性使 Selenium 不仅在测试方面不可或缺。例如&#xff0c;你可以将 Selenium 与 Python 结合使用&#xff0c;对网站进行搜刮。当然&#xff0c;为了不被拦截&#xff0c;你需要一个代…

2024数维杯数学建模竞赛B题完整思路代码和论文分析

2024数维杯数学建模B题完整代码和成品论文已更新&#xff0c;获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc# 2024数维杯数学建模竞赛B题完整思路代码论文分析如下&#xff1a; 问题分析 问题(1):分析正己烷不溶物(INS)对热解产率的…

win11个性化锁屏界面怎么关闭?

win11个性化锁屏界面关闭方法对于win11用户来说&#xff0c;关闭个性化锁屏界面是一个常见问题。本文将由php小编苹果详细介绍如何执行此操作&#xff0c;分步指导并提供操作截图。继续阅读以了解具体步骤。 win11个性化锁屏界面关闭方法 第一步&#xff0c;点击底部Windows图…

2024数维杯数学建模竞赛A题完整思路代码论文分析

2024数维杯数学建模A题完整代码和成品论文获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/bgic2nbxs2h41pvt?singleDoc# 2024数维杯数学建模竞赛A题完整思路代码论文分析如下&#xff1a; 问题分析 对A题4个小问题的分析如下: 第一个小问题的分析: 这一问题要求…

知识付费 管理系统,专业技术课程讲解视频怎么制作?制作事项有几条?

现在的网络课程&#xff0c;分为专业和非专业的两种&#xff0c;专业的就是要提供硬性技术的&#xff0c;如果是值了的老师&#xff0c;要制作专业技术课程讲解视频&#xff0c;那需要怎么制作?因为&#xff0c;专业课程的要求更为的严苛&#xff0c;所以&#xff0c;老师们也…

python数据分析常用基础语法

Python语言基础——语法基础 前言一、变量的介绍与使用变量的介绍变量命名规则变量的使用拓展 二、标识符标识符命名命名规则注意事项 三、数据类型数据类型的介绍数据类型的查看示例 四、输入与输出输入和输出的介绍format格式化输出占位符 五、代码缩进与注释代码缩进 前言 …

vue3 JSX的使用与警告【JSX 元素隐式具有类型 “any“,因为不存在接口 “JSX.IntrinsicElements“】解决办法

一、安装 pnpm i vitejs/plugin-vue-jsx -D 二、配置 1、tsconfig.json "compilerOptions":{"jsx":"preserve" } 2、vite.config.ts import VueJsx from "vitejs/plugin-vue-jsx"...plugin:[vue(),VueJsx() ] 三、简单使用案例…

【TypeScript函数简介以及使用方法】

TypeScript 是一种 JavaScript 的超集&#xff0c;添加了静态类型系统和其他 ES6&#xff08;以及更多&#xff09;功能。在 TypeScript 中&#xff0c;函数是非常重要的构建块&#xff0c;它们允许你组织代码并执行特定的任务。 TypeScript 函数简介 在 TypeScript 中&#…

【论文速读】| LLM4FUZZ:利用大语言模型指导智能合约的模糊测试

本次分享论文&#xff1a;LLM4FUZZ: Guided Fuzzing of Smart Contracts with Large Language Models 基本信息 原文作者&#xff1a;Chaofan Shou, Jing Liu, Doudou Lu, Koushik Sen 作者单位&#xff1a;加州大学伯克利分校&#xff0c;加州大学欧文分校&#xff0c;Fuzz…

计算机网络-DHCPv6配置

DHCPv6实验配置 一、DHCPv6有状态配置 拓扑图&#xff1a; 请求报文 回复报文中的信息 配置&#xff1a; # 全局启用ipv6 ipv6 # 启用DHCP dhcp enable# 创建dhcpv6的地址池 dhcpv6 pool pool1address prefix 2001::/64excluded-address 2001::10dns-server 2001:4860:4860::8…