【ConvLSTM第一期】ConvLSTM原理

目录

  • 🧠 一、ConvLSTM 原理详解
    • 1.1 背景
    • 1.2 ConvLSTM 的结构
  • 参考

ConvLSTM(Convolutional Long Short-Term Memory)是一种结合了卷积神经网络(CNN)与循环神经网络(RNN)中 LSTM(长短期记忆)模型的结构,专用于处理具有时序性和空间结构的数据(如视频、时序图像等)。

在这里插入图片描述
下面我将详细讲解ConvLSTM的原理与Python实现方法。

🧠 一、ConvLSTM 原理详解

1.1 背景

传统的 LSTM适合处理一维时间序列数据(如语音、文本),但不适合处理空间结构显著的二维或三维数据(如图像或视频帧)。

LSTM 是为 一维序列(如文本、语音) 设计的,输入形状是:

(batch, time, features)

例如:

x = torch.rand(32, 10, 100)  # 32个序列,每个10步,每步是100维向量

❌ 如果你把图像当成向量输入 LSTM,会发生什么?

  • 你必须把图像 flatten(摊平),如 64×64 变成 4096
  • 这样会 丢失空间结构(像素之间的邻接关系)

ConvLSTM 的改进 —— 处理 3D 空间信息

ConvLSTM 通过将传统 LSTM 中的全连接操作替换为 卷积操作,从而保留空间结构信息。

ConvLSTM 的输入不是 (batch, time, feature),而是:

(batch, time, channels, height, width)

每一个时间步输入的是一个图像(或图像帧),保留空间结构。

🔁 它在每一时间步中,不再执行全连接运算,而是对图像执行 2D 卷积操作:
在这里插入图片描述

(+) 是矩阵乘法(LSTM)
(*) 是卷积操作(ConvLSTM)

1.2 ConvLSTM 的结构

在普通 LSTM 中,状态更新公式如下:

i_t = σ(W_xi * x_t + W_hi * h_{t-1} + b_i)
f_t = σ(W_xf * x_t + W_hf * h_{t-1} + b_f)
o_t = σ(W_xo * x_t + W_ho * h_{t-1} + b_o)
g_t = tanh(W_xg * x_t + W_hg * h_{t-1} + b_g)c_t = f_t ⊙ c_{t-1} + i_t ⊙ g_t
h_t = o_t ⊙ tanh(c_t)

LSTM的单元结构如下:
在这里插入图片描述

为了克服LSTM在处理三维信息中的不足,ConvLSTM 将 LSTM 中的2D的输入转换成了3D的tensor,最后两个维度是空间维度(行和列)。对于每一时刻t的数据,ConvLSTM 将 LSTM 中的一部分连接操作替换为了卷积操作,即通过当前输入和局部邻居的过去状态来进行预测。
在这里插入图片描述

在这里插入图片描述

在 ConvLSTM 中,相应的乘法操作 * 被替换为卷积操作 ⊛:

i_t = σ(W_xi ⊛ x_t + W_hi ⊛ h_{t-1} + b_i)
f_t = σ(W_xf ⊛ x_t + W_hf ⊛ h_{t-1} + b_f)
o_t = σ(W_xo ⊛ x_t + W_ho ⊛ h_{t-1} + b_o)
g_t = tanh(W_xg ⊛ x_t + W_hg ⊛ h_{t-1} + b_g)c_t = f_t ⊙ c_{t-1} + i_t ⊙ g_t
h_t = o_t ⊙ tanh(c_t)

其中:

  • ⊛ 表示卷积操作
  • 输入 x_t 是一个多通道图像(如帧)
  • h_t 和 c_t 是隐藏状态和单元状态的张量,包含空间结构

在这里插入图片描述

参考

1、Tensor(张量)的解释说明

Tensor(张量)就是一个多维数组。

维度举例说明
0D3.14标量
1D[1, 2, 3]向量
2D[[1,2],[3,4]]矩阵
3DRGB 图像:(通道, 高, 宽)
4D(batch, 通道, 高, 宽)一批图像
5D(batch, 时间, 通道, 高, 宽)一批视频序列(ConvLSTM 的输入张量)

PyTorch 中:

x = torch.rand(2, 10, 1, 64, 64)  # 一个 batch=2 的视频序列

表示:

  • 2 个样本
  • 每个样本有 10 帧图像(时间维度)
  • 每帧是 1 通道(灰度图)
  • 每帧的大小是 64×64(空间维度)

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

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

相关文章

4.8.1 利用Spark SQL实现词频统计

在利用Spark SQL实现词频统计的实战中,首先需要准备单词文件并上传至HDFS。接着,可以通过交互式方法或创建Spark项目来实现词频统计。交互式方法包括读取文本文件生成数据集,扁平化映射得到新数据集,然后将数据集转成数据帧&#…

Linux相关概念和易错知识点(41)(UDP、TCP报头结构)

目录 1.UDP(1)传输层(2)UDP报头(3)缓冲区和sk_buff①缓冲区②sk_buff 2.TCP(1)发送和接受缓冲区(2)报头结构①按序到达②可靠传输③流量控制④紧急指针 1.UDP…

光谱相机在生态修复监测中的应用

光谱相机通过多维光谱数据采集与智能分析技术,在生态修复监测中构建起‌“感知-评估-验证”‌的全周期管理体系,其核心应用方向如下: 一、土壤修复效能量化评估 ‌重金属污染动态监测‌ 通过短波红外(1000-2500nm)波…

[网页五子棋]项目介绍以及websocket的消息推送(轮询操作)、报文格式和握手过程(建立连接过程)

文章目录 项目背景核心技术创建项目WebSocket消息推送轮询操作 报文格式握手过程(建立连接过程) 项目背景 用户模块 用户的注册和登录管理用户的天梯分数,比赛场数,获胜场数等信息 匹配模块 依据用户的天梯积分,来实现匹配机制 对战模块 把两…

时序模型介绍

一.整体介绍 1.单变量 vs 多变量时序数据 单变量就是只根据时间预测,多变量还要考虑用户 2.为什么不能用机器学习预测: a.时间不是影响标签的关键因素 b.时间与标签之间的联系过于弱/过于复杂,因此时序模型依赖于时间与时间的相关性来进行预…

尚硅谷redis7 86 redis集群分片之3主3从集群搭建

86 redis集群分片之3主集群搭建 3主3从redis集群配置 找3台真实虚拟机,各自新建 mķdir -p /myredis/cluster 新建6个独立的redis实例服务 IP:192.168.111.175端口6381/端口6382 vim /myredis/cluster/redisCluster6381.conf bind 0.0.0.0 daemonize yes protected-mode no …

Python服务器请求转发服务

前言: 服务器无法连接外网 配置步骤 准备python脚本服务器内下载python 示例 1.下载python创建虚拟环境以及配置 -- 磁盘空间 df -h -- 下载apt sudo yum install apt -y-- 下载python pip sudo apt install python3 python3-pip python3-venv -y-- 测试查看 …

02.K8S核心概念

服务的分类 有状态服务:会对本地环境产生依赖,例如需要把数据存储到本地磁盘,如mysql、redis; 无状态服务:不会对本地环境产生任何依赖,例如不会存储数据到本地磁盘,如nginx、apache&#xff…

Java八股-Java优缺点,跨平台,jdk、jre、jvm关系,解释和编译

java优势劣势? 优势:面向对象,平台无关,垃圾回收,强大的生态系统 劣势:运行速度慢(相比于c和rust这样的原生编译语言会比较慢),语法繁琐(相比于python&…

Attention Is All You Need论文阅读笔记

Attention is All You Need是如今机器学习研究者必读的论文,该文章提出的Transformer架构是如今很多机器学习项目的基础,说该文章极大推动了机器学习领域的研究也不为过。 但这么重要,也是必读的文章对初学者来说其实并不友好,很多…

【MAC】YOLOv8/11/12 转换为 CoreML 格式并实现实时目标检测

在本文中,我们将详细介绍如何将 YOLOv8/11/12 模型转换为 CoreML 格式,并使用该模型在摄像头实时检测中进行目标检测。主要适用于M1、M2、M3、M4芯片的产品。 以下教程在YOLOv8/11/12均适用,此处就以 YOLOv11 举例 目录 前提条件YOLOv8/11/12 转换为 CoreML实时目标检测结论…

Redis--缓存击穿详解及解决方案

缓存击穿 缓存击穿问题也称热点key问题,就是一个高并发访问(该key访问频率高,访问次数多)并且缓存重建业务比较复杂的key突然失效了,大量的请求访问会在瞬间给数据库带来巨大的冲击。 缓存重建业务比较复杂&#xff…

UniApp X:鸿蒙原生开发的机会与DCloud的崛起之路·优雅草卓伊凡

UniApp X:鸿蒙原生开发的机会与DCloud的崛起之路优雅草卓伊凡 有句话至少先说,混开框架中目前uniapp x是率先支持了鸿蒙next的开发的,这点来说 先进了很多,也懂得审时度势。 一、UniApp X如何支持鸿蒙原生应用? UniAp…

域名解析怎么查询?有哪些域名解析查询方式?

在互联网的世界里,域名就像是我们日常生活中的门牌号,帮助我们快速定位到想要访问的网站。而域名解析则是将这个易记的域名转换为计算机能够识别的IP地址的关键过程。当我们想要了解一个网站的域名解析情况,或者排查网络问题时,掌…

算力卡上部署OCR文本识别服务与测试

使用modelscope上的图像文本行检测和文本识别模型进行本地部署并转为API服务。 本地部署时把代码中的检测和识别模型路径改为本地模型的路径。 关于模型和代码原理可以参见modelscope上这两个模型相关的页面: iic/cv_resnet18_ocr-detection-db-line-level_damo iic…

大语言模型的完整训练周期从0到1的体系化拆解

以下部分内容参考了AI。 要真正理解大语言模型(LLM)的创生过程,我们需要将其拆解为一个完整的生命周期,每个阶段的关键技术相互关联,共同支撑最终模型的涌现能力。以下是体系化的训练流程框架: 阶段一&am…

吃水果(贪心)

文章目录 题目描述输入格式输出格式样例输入样例输出提交链接提示 解析参考代码 题目描述 最近米咔买了 n n n 个苹果和 m m m 个香蕉,他每天可以选择吃掉一个苹果和一个香蕉(必须都吃一个,即如果其中一种水果的数量为 0 0 0,则…

【FAQ】HarmonyOS SDK 闭源开放能力 —Account Kit(4)

1.问题描述: LoginWithHuaweiIDButton不支持深色模式下定制文字和loading样式? 解决方案: LoginWithHuaweiIDButtonParams 中的有个supportDarkMode属性,设置为true后,需要自行响应系统的变化,见文档&am…

【C语言】指针详解(接)

前言: 文接上章,在上章节讲解了部分指针知识点,在本章节为大家继续提供。 六指针与字符串:C 语言字符串的本质 在 C 语言中,字符串实际上是一个以\0结尾的字符数组。字符串常量本质上是指向字符数组首元素的指针&…

第5讲、Odoo 18 CLI 模块源码全解读

Odoo 作为一款强大的企业级开源 ERP 系统,其命令行工具(CLI)为开发者和运维人员提供了极大的便利。Odoo 18 的 odoo/cli 目录,正是这些命令行工具的核心实现地。本文将结合源码,详细解读每个 CLI 文件的功能与实现机制…