【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,一经查实,立即删除!

相关文章

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

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

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

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

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

今天一用户从供应商手中拿到产品价目表,但是设置起来蒙圈了,接下来我们就一起设置一下吧~ 一、产品价格表 我们通过供应商手中拿到产品价目表是这个样子的: 我们可以看到此产品的销售客价根据不同地区导致的价格不同&#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. "结束时间戳 效果:

Git笔记-常用指令

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

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

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

python数据分析常用基础语法

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

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

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

计算机网络-DHCPv6配置

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

【新版系统架构】知识点背诵默写本

前言 系统架构考试在即,想要考试的人肯定感受到了沉甸甸的压力和紧迫感,脑海中不断闪过知识点的画面,却让人有些头昏脑胀,发现很难完全记住,这个考试很难,知识点很多。这次我在准备考试的同时,…

基于Java+SpringBoot+Vue前后端分离教学资源共享平台系统

基于JavaSpringBootVue前后端分离教学资源共享平台系统 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系统…

Meta最新成果:前所未有的加速Emu推理 | Imagine Flash:新型蒸馏框架发布

文章地址:https://arxiv.org/pdf/2405.05224 扩散模型是一个强大的生成框架,但推理过程非常昂贵。现有的加速方法通常会在极低步骤情况下牺牲图像质量,或者在复杂条件下失败。这项工作提出了一个新颖的蒸馏框架,旨在通过仅使用一…

系统思考—愿景领导

“如果你总是低着头,那么你永远无法看见彩虹。”这句话不仅是对个人的提醒,也极其适用于每一位企业创始人。每位创始人背后不仅有一个梦想,还有一段充满爱的故事。 在作为策略顾问的角色中,我深知聆听的重要性——需要全神贯注地…

链表第4/9题--翻转链表--双指针法

LeetCode206:给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。 示例 1: 输入:head [1,2,3,4,5] 输出:[5,4,3,2,1]示例 2: 输入:head [1,2] 输出:[2,1]示例…

防火墙技术基础篇:解析防火墙应用层代理概念及功能

防火墙技术基础篇:解析防火墙应用层代理概念及功能 1 应用层代理的概念 应用层代理(Application Proxy):防火墙应用层代理是网络安全领域中的一种重要技术,工作在OSI模型的第七层,即应用层。它通过代理服…

汽车EDI:安通林Antolin EDI 项目案例

安通林(Antolin)是一家全球性的汽车零部件制造商,专注于汽车内饰系统和零部件的生产,致力于创新和采用先进的技术。近年来 安通林Antolin 推动其供应商部署EDI系统,使得双方能够通过EDI传输业务单据,极大提…

和府捞面三年累亏7亿,李学林万店计划受阻

大面积裁员、使用预制料理包,曾经的网红高端面馆连锁品牌和府捞面深陷风波。 2012年,和府捞面以一碗“书房里的养生面”打开市场,其创始人李学林在面馆赛道另辟蹊径,门店设计引入了“书房”概念,走“高端”路线&#…

zabbix基础

监控系统基本介绍: 企业级应用中,服务器数量众多,一般情况下需要维护人员进行长时间对服务器体系、计算机或其他网络设备(包括硬件和软件)进行长时间进行性能跟踪,保证正常稳定安全的运行,于是…

安全多方计算简介

安全多方计算 安全多方计算(SecureMulti-partComputation,MPC)是80年代提出的一个概念,它已成为隐私计算的核心技术之一。在密码学和区块链技术应用中占据重要地位。 MPC数学定义: 假设存在n个参与方 P 1 , P 2 , … , P n P_1,…

python实现英文短文自动分词写入文本文件

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.使用 四.分析 一.前言 英文短文自动分词(Automatic Word Segmentation)在自然语言处理和文本分析中有着广泛的应用。