LSTM学习笔记

上一篇文章中我们提到,CRNN模型中用于预测特征序列上下文的模块为双向LSTM模块,本篇中就来针对该模块的结构和实现做一些理解。

Bidirectional LSTM模块结构如下图所示:

在Pytorch中,已经集成了LSTM模块,定义如下:

CLASStorch.nn.LSTM(self, input_size, hidden_size, num_layers=1, bias=True, batch_first=False, dropout=0.0, bidirectional=False, proj_size=0, device=None, dtype=None)

 参数说明:

  • input_size:输入的feature数;
  • hidden_size:隐藏状态h的的feature数;
  • num_layers:递归层的数量。如果num_layers=2,意味着将两个LSTM堆叠在一起,第二个LSTM模块的输入为第一个LSTM的输出,由第二个LSTM输出最终结果。
  • bias:偏置,默认为True,若设为False,则不使用b_ih和b_hh(这两个参数会在下文说明)
  • batch_first:为True时,输入和输出形状为(batch, seq, feature),否则为(seq, batch, feature)。
  • dropout:默认为0。若为非零值,则在每个LSTM层的输出上引入dropout层,dropout概率为设置的dropout值。
  • bidirectional:默认为False。若为True,则为双向LSTM,在CRNN网络中,我们将该参数设置为True。 
  • proj_size:默认为0。若设置为非零值,意味着使用映射大小的size,关于proj_size,pytorch文档中有如下说明:

对于输入序列中的每个元素,每一层需要进行如下计算:

其中,

  • xt​为t时刻的输入;
  • ht是t时刻的隐藏状态,ht-1为t-1时刻的隐藏状态;
  • ct为t时刻的元组状态(cell state);
  • it、ft、gt和ot分别为input gate、forget gate、cell gate、和output gate;
  • σ为sigmoid 函数;
  • ⊙为Hadamard乘积(矩阵点乘)。

对于多层LSTM,输入为上一层的隐含状态,Pytorch文档中对此有较详细的说明:

关于可学习模型参数的说明:

  • weight_ih_l[k]:第k层的input-hidden权重参数(W_ii|W_if|W_ig|W_io),k=0时,形状为(4*hidden_size, input_size) ;k>0时,,若proj_size为0,则权重参数形状为(4*hidden_size, num_directions * hidden_size),若proj_size>0,则权重参数形状为(4*hidden_size, num_directions * proj_size)。
  • weight_hh_l[k]:第k层的hidden-hidden权重参数(W_hi|W_hf|W_hg|W_ho)。若proj_size=0,权重形状:(4*hidden_size, hidden_size);若proj_size>0,则权重形状为(4*hidden_size, proj_size)。
  • bias_ih_l[k]:第k层的input-hidden偏置(b_hi|b_hf|b_hg|b_ho),形状为(4*hidden_size)。
  • bias_hh_l[k]:第k层的hidden-hidden偏置(b_hi|b_hf|b_hg|b_ho),形状为(4*hidden_size)。
  • weight_hr_l[k]:第k层的projection权重,形状为(proj_size, hidden_size),该参数只有在proj_size>0的时候存在。
  • weight_ih_l[k]_reverse:weight_ih_l[k]的反向权重,只在bidirectional=True的时候存在。
  • weight_hh_l[k]_reverse:weight_hh_l[k]的反向权重,只在bidirectional=True的时候存在。
  • bias_ih_l[k]_reverse:bias_ih_l[k]的反向权重,只在bidirectional=True的时候存在。
  • bias_hh_l[k]_reverse:bias_hh_l[k]的反向权重,只在bidirectional=True的时候存在。
  • weight_hr_l[k]_reverse:weight_hr_l[k]的反向权重,只在bidirectional=True的时候存在。

参考资料:LSTM — PyTorch 2.1 documentation

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

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

相关文章

编译openjdk 调试java

背景 一直很想深入了解java运行机制,想编译debug版本openjdk 实践 安装环境 安装vmware软件,第一步就遇到很多麻烦,找不到免费的vmware。 后来下载了官网的,在github和百度一直搜如何破解,幸亏有大佬传了比较全的…

final 关键字的用法

final关键字; //使用的位置: 1.用于声明常量:基本数据类型的常量不允许修改值, 引用数据类型的常量不允许重新分配内存地址 2.用于声明方法(最终方法),该方法在了类中不能重写,在当前类中允许重载 3.用于声明类(最终类), 该类不允许子类继承 package com…

有道开源RAG引擎 QAnything 版本更新啦

https://github.com/netease-youdao/QAnything 近日,我们将我们的RAG(基于检索增强的生成,Retrieval Augmented Generation)引擎QAnything开源了,用户可以传入doc, pdf, 图片,ppt, excel 等各种类型的文档…

LLM:RoPE位置编码

论文:https://arxiv.org/pdf/2104.09864.pdf 代码:https://github.com/ZhuiyiTechnology/roformer 发表:2021 绝对位置编码:其常规做法是将位置信息直接加入到输入中(在x中注入绝对位置信息)。即在计算 q…

uniapp组件库中Collapse 折叠面板 的使用方法

目录 #平台差异说明 #基本使用 #控制面板的初始状态,以及是否可以操作 #自定义样式 #1. 如果修改展开后的内容? #2. 如何自定义标题的样式? #3. 如何修改整个Item的样式? #API #Collapse Props #Collapse Item Props #…

redis-exporter监控部署(k8s内)tensuns专用

reidis-exporter服务需要用到configmap、service、deployment服务 创建存放yaml目录 mkdir /opt/redis-exporter && cd /opt/redis-exporter 编辑yaml配置文件 vi configmap.yaml apiVersion: v1 kind: ConfigMap metadata:name: redis-confnamespace: monitorlab…

【信号与系统】【北京航空航天大学】实验四、幅频、相频响应和傅里叶变换

一、实验目的 1、 掌握利用MATLAB计算系统幅频、相频响应的方法; 2、 掌握使用MATLAB进行傅里叶变换的方法; 3、 掌握使用MATLAB验证傅里叶变换的性质的方法。 二、实验内容 1、 MATLAB代码: >> clear all; >> a [1 3 2]; …

Redis 持久化之 RDB AOF

1、简介 Redis 是一个基于内存的 key-value 类型的 Nosql 数据库,经常用来做缓存操作,但是一旦Redis 宕机,重启之后数据会丢失,因此,需要将内存数据进行持久化,保证服务重启后数据能够恢复之前的状态。Redi…

软件资源管理下载系统全新带勋章功能 + Uniapp前端

测试环境:php7.1。ng1.2,MySQL 5.6 常见问题: 配置好登录后转圈圈,检查环境及伪静态以及后台创建好应用 上传图片不了,检查php拓展fileinfo 以及public文件权限 App个人主页随机背景图,在前端uitl文件…

蓝桥杯练习题dfs与bfs

📑前言 本文主要是【算法】——dfs与bfs的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是听风与他🥇 ☁️博客首页:CSDN主页听风与他 🌄每日一句&#xff…

(循环依赖问题)学习spring的第九天

Bean实例的属性填充 Spring在属性注入时 , 分为如下几种情况 : 注入单向对象引用 : 如usersevice里注入userdao , userdao里没有注入其他属性 注入双向对象引用 : 如usersevice里注入userdao , userdao也注入usersevice属性 二 . 着重看循环依赖问题 (搞清原理即可) 问题提出…

Hive建表时候用的参数及其含义

1.序列化与反序列化 序列化器(Serializer)和反序列化器(Deserializer) SerDe 是两个单词的拼写 serialized(序列化) 和 deserialized(反序列化)。 什么是序列化和反序列化呢? 当进程在进行远程通信时,彼…

Android双击图片放大移动图中双击点到ImageView区域中心,Kotlin

Android双击图片放大移动图中双击点到ImageView区域中心,Kotlin 初始化状态,ImageView里面只是显示一张fitcenter被缩放的原图,当手指在图片上双击后(记录双击点位置:mCurX,mCurY)画一个红色小圆…

【Linux的权限命令详解】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 shell命令以及运行原理 Linux权限的概念 Linux权限管理 一、什么是权限? 二、权限的本质 三、Linux中的用户 四、linux中文件的权限 4.1、文件访问…

基于SpringBoot Vue高校失物招领系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

Django(八)

1. 管理员操作 1.1 添加 from django.shortcuts import render, redirectfrom app01 import models from app01.utils.pagination import Paginationfrom django import forms from django.core.exceptions import ValidationError from app01.utils.bootstrap import BootStr…

(学习日记)2024.01.19

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

2635. 转换数组中的每个元素

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 编写一个函数,这个函数接收一个整数数组 arr 和一个映射函数 fn ,通…

基于ssm+vue的宠物医院系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

GitHub提交 / 拉取时 443 fatal: unable to access ‘https:

这个问题嘛 懂得都懂 但是用了魔法后依旧会出现443错误 排查了工具发现并不是工具的问题 修改一下git代理即可解决 解决方法如下 确保魔法可用的情况下 打开魔法 打开系统设置 > 网络和Internet > 代理 找到自己的代理IP 如下 这里以我的代理IP和端口举例 在…