当前位置: 首页 > news >正文

WITRAN_2DPSGMU_Encoder 类中,门机制

WITRAN_2DPSGMU_Encoder 类中的门机制详解

WITRAN_2DPSGMU_Encoder 类中,门机制是核心部分,类似于 LSTM 或 GRU 的门控机制,用于控制隐藏状态的更新和输出。以下是对门机制的详细解析。


1. 门机制的作用

门机制的主要作用是:

  1. 控制信息流动

    • 决定当前时间步的输入信息和上一时间步的隐藏状态如何结合。
    • 通过更新门、输入门和输出门,选择性地保留或丢弃信息。
  2. 更新隐藏状态

    • 根据门控信号,更新行隐藏状态(hidden_slice_row)和列隐藏状态(hidden_slice_col)。
  3. 生成输出

    • 将更新后的隐藏状态拼接,作为当前时间步的输出。

2. 门机制的组成

门机制由以下几部分组成:

(1) 门控信号的生成
gate = self.linear(torch.cat([hidden_slice_row, hidden_slice_col, a[:, slice, :]], dim=-1), W, B, batch_size, slice, Water2sea_slice_num)
  • 输入

    • hidden_slice_row:行隐藏状态,形状为 [128, 32]
    • hidden_slice_col:列隐藏状态,形状为 [128, 32]
    • a[:, slice, :]:当前时间步的输入,形状为 [128, 11]
    • 拼接后,输入形状为 [128, 75]
  • 线性变换

    • 权重矩阵 W 的形状为 [192, 75]
    • 偏置向量 B 的形状为 [192]
    • 输出 gate 的形状为 [128, 192]

(2) 分割门控信号
sigmod_gate, tanh_gate = torch.split(gate, 4 * self.hidden_size, dim=-1)
  • 分割结果
    • sigmod_gate:前 128 列,用于生成更新门和输出门。
    • tanh_gate:后 64 列,用于生成输入门。

(3) 激活函数处理
  • Sigmoid 激活

    sigmod_gate = torch.sigmoid(sigmod_gate)
    
    • sigmod_gate 的值映射到 [0, 1] 区间。
    • 用于生成更新门和输出门的开关信号。
  • Tanh 激活

    tanh_gate = torch.tanh(tanh_gate)
    
    • tanh_gate 的值映射到 [-1, 1] 区间。
    • 用于生成输入门的候选值。

(4) 分割门控信号为具体的门
update_gate_row, output_gate_row, update_gate_col, output_gate_col = sigmod_gate.chunk(4, dim=-1)
input_gate_row, input_gate_col = tanh_gate.chunk(2, dim=-1)
  • 更新门

    • update_gate_row:更新行隐藏状态的门控信号,形状为 [128, 32]
    • update_gate_col:更新列隐藏状态的门控信号,形状为 [128, 32]
  • 输出门

    • output_gate_row:输出行隐藏状态的门控信号,形状为 [128, 32]
    • output_gate_col:输出列隐藏状态的门控信号,形状为 [128, 32]
  • 输入门

    • input_gate_row:用于更新行隐藏状态的输入门信号,形状为 [128, 32]
    • input_gate_col:用于更新列隐藏状态的输入门信号,形状为 [128, 32]

3. 隐藏状态的更新

(1) 更新行隐藏状态
hidden_slice_row = torch.tanh((1-update_gate_row)*hidden_slice_row + update_gate_row*input_gate_row) * output_gate_row
  • 计算过程

    1. (1 - update_gate_row) * hidden_slice_row
      • 保留上一时间步的行隐藏状态。
    2. update_gate_row * input_gate_row
      • 引入当前时间步的输入信息。
    3. 相加后通过 torch.tanh 激活:
      • 将结果映射到 [-1, 1] 区间。
    4. 乘以 output_gate_row
      • 控制隐藏状态的输出强度。
  • 结果

    • 更新后的行隐藏状态 hidden_slice_row,形状为 [128, 32]

(2) 更新列隐藏状态
hidden_slice_col = torch.tanh((1-update_gate_col)*hidden_slice_col + update_gate_col*input_gate_col) * output_gate_col
  • 计算过程

    • 与更新行隐藏状态的逻辑相同,但作用于列隐藏状态。
  • 结果

    • 更新后的列隐藏状态 hidden_slice_col,形状为 [128, 32]

4. 输出的生成

output_slice = torch.cat([hidden_slice_row, hidden_slice_col], dim=-1)
  • 拼接隐藏状态

    • 将行隐藏状态 hidden_slice_row 和列隐藏状态 hidden_slice_col 在最后一个维度上拼接。
    • 输出形状为 [128, 64]
  • 保存输出

    output_all_slice_list.append(output_slice)
    
    • 将当前时间步的输出保存到 output_all_slice_list 中。

5. 门机制的核心逻辑总结

  1. 门控信号的生成

    • 通过线性变换生成门控信号 gate,并分割为更新门、输出门和输入门。
  2. 隐藏状态的更新

    • 使用更新门和输入门结合上一时间步的隐藏状态,生成新的隐藏状态。
    • 使用输出门控制隐藏状态的输出强度。
  3. 输出的生成

    • 将行隐藏状态和列隐藏状态拼接,作为当前时间步的输出。

6. 图示化表示

输入:hidden_slice_row [128, 32]hidden_slice_col [128, 32]当前时间步输入 a[:, slice, :] [128, 11]拼接后输入 [128, 75]↓
线性变换:gate = self.linear(...) → [128, 192]↓
分割 gate:sigmod_gate [128, 128] → 更新门、输出门tanh_gate [128, 64] → 输入门↓
激活函数:Sigmoid → sigmod_gateTanh → tanh_gate↓
分割门控信号:更新门:update_gate_row, update_gate_col输出门:output_gate_row, output_gate_col输入门:input_gate_row, input_gate_col↓
更新隐藏状态:hidden_slice_row → 更新行隐藏状态hidden_slice_col → 更新列隐藏状态↓
生成输出:output_slice = torch.cat([hidden_slice_row, hidden_slice_col], dim=-1) → [128, 64]

7. 总结

  • 更新门:控制上一时间步的隐藏状态保留多少。
  • 输入门:控制当前时间步的输入信息引入多少。
  • 输出门:控制隐藏状态的输出强度。
  • 最终输出:将行隐藏状态和列隐藏状态拼接,作为当前时间步的输出。

这种门机制类似于 LSTM,但针对二维时间序列数据进行了扩展,分别更新行和列的隐藏状态,从而捕获时间序列的复杂依赖关系。

相关文章:

WITRAN_2DPSGMU_Encoder 类中,门机制

WITRAN_2DPSGMU_Encoder 类中的门机制详解 在 WITRAN_2DPSGMU_Encoder 类中,门机制是核心部分,类似于 LSTM 或 GRU 的门控机制,用于控制隐藏状态的更新和输出。以下是对门机制的详细解析。 1. 门机制的作用 门机制的主要作用是:…...

OSI参考模型和TCP/IP模型

1.OSI参考模型 OSI模型: OSI参考模型有7层,自下而上依次为物理层,数据链路层,网络层,传输层,会话层,表示层,应用层。(记忆口诀:物联网叔会用)。低…...

3D版的VLA:从3D VLA、SpatialVLA到PointVLA——3D点云版的DexVLA,在动作专家中加入3D数据

前言 之前写这篇文章的时候,就想解读下3D VLA来着,但一直因为和团队并行开发具身项目,很多解读被各种延后 更是各种出差,比如从25年3月下旬至今,连续出差三轮,绕中国半圈,具身占八成 第一轮 …...

java: 需要‘)‘ java: 未结束的字符串文字,java: 不是语句,怎么解决

java: 需要’)’ IDE运行当中因为字符串中的JSON串,导致编码不对,IDEA编码识别错误,编译不过,程序运行不起来,解决办法。 第一步,进行修改编码进行尝试 第二步,继续修改编码...

HarmonyOS:使用Refresh组件实现页面下拉刷新上拉加载更多

一、前言 可以进行页面下拉操作并显示刷新动效的容器组件。 说明 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。该组件从API Version 12开始支持与垂直滚动的Swiper和Web的联动。当Swiper设置loop属性为true时&…...

HarmonyOS应用开发的工程目录结构

AppScope > app.json5 应用级的配置信息 AppScope > resources 这个目录下的base>element用于存放全局使用的基本元素,如字符串、颜色和布尔值。base>media目录则存储媒体、动画和布局等资源文件。如果模块下的resources的有同样的资源,那么…...

详解关于VS配置好Qt环境之后但无法打开ui界面

目录 找到Qt安装目录中designer.exe的路径 找到vs中的解决方案资源管理器 右键ui文件,找到打开方式 点击添加 然后把前面designer.exe的路径填到程序栏中,点击确定 然后设置为默认值,并点击确定 当在vs中配置好Qt环境之后,但…...

【JDBC-54.2】深入理解SQL注入攻击及JDBC防护方案

1. SQL注入攻击概述 SQL注入(SQL Injection)是当今Web应用程序中最常见、最危险的安全漏洞之一。它利用了应用程序对用户输入数据处理不当的缺陷,攻击者通过在输入字段中插入恶意的SQL代码片段,欺骗服务器执行非预期的SQL命令。 …...

PCDN通过个人路由器,用更靠近用户的节点来分发内容,从而达到更快地网络反应速度

PCDN(P2P CDN)的核心思想正是利用个人路由器、家庭宽带设备等分布式边缘节点,通过就近分发内容来降低延迟、提升网络响应速度,同时降低传统CDN的带宽成本。以下是其技术原理和优势的详细分析: 1. 为什么PCDN能更快&…...

【软件测试】bug 篇

本章思维导图: 1. 软件测试的生命周期 软件测试贯穿于整个软件的生命周期 流程阶段需求分析测试计划测试设计/开发测试执行测试评估上线运行维护具体工作内容1. 阅读需求文档 2. 标记可测试需求 3. 确定测试类型1. 制定测试范围 2. 选择测试工具 3. 分配资源1. 编写…...

java -jar指定类加载

在 Java 中,使用 java -jar 命令运行 JAR 文件时,默认会加载 JAR 文件的 MANIFEST.MF 文件中指定的 Main-Class。如果你想在运行时指定一个类来加载,可以通过以下方式实现: 方法 1:直接指定类路径和类名 如果你不想使用…...

MVC 模式深度解析与 Spring 框架实践研究

MVC 模式深度解析与 Spring 框架实践研究 摘要 MVC(Model-View-Controller)模式作为软件工程中最重要的架构模式之一,通过将应用逻辑划分为模型、视图和控制器三个独立组件,实现了代码的高内聚低耦合,显著提升了软件的可维护性和可扩展性。本文从 MVC 模式的核心思想出发…...

驱动开发硬核特训 · Day 11(下篇):从 virtio_blk 看虚拟总线驱动模型的真实落地

🔍 B站相应的视屏教程: 📌 内核:博文视频 - 总线驱动模型实战全解析 敬请关注,记得标为原始粉丝。 🔧 在上篇中,我们已经从理论视角分析了“虚拟总线驱动模型”在 Linux 驱动体系中的独特定位。…...

Java实现快速排序算法

用「整理书架」理解快速排序原理 想象你有一堆杂乱的书需要按大小排序,快速排序的步骤可以类比为: 1. 选一本“基准书”(比如最右侧的书) 2. 把书分成三堆: - 左边:比基准小的书 - 中间:基…...

3.3.2 应用层协议设计protobuf(二进制序列化协议)

文章目录 3.3.2 应用层协议设计protobuf(二进制序列化协议)1. 什么是协议设计什么是协议为什么说进程间通信就需要协议,而不是客户端与服务端之间为什么需要自己设计协议 2. 判断消息的完整性->区分消息的边界1.固定长度2. 特定符号3. 固定…...

软件测试过程模型:v模型、w模型、x模型、H模型

软件测试流程 获取测试需求编写测试计划制定测试方案开发和设计测试用例执行测试提交缺陷报告测试分析与评审提交测试报告准备下一版本测试 软件测试过程模型 v模型 【V模型是线性的操作方式】 优点: 验收测试的标准是用户的需求,用户需求对应指导…...

设计模式-代理模式

虚代理 根据需要创建对象...

cocos Spine资源及加载

COCOS Spine 资源加载 创建 Canvas 以及Camera 再进行spine 拖入 提供40个实战酷炫技能spine文件: Spine文件下载...

约翰·麦卡锡:我的人工智能之梦

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 约翰麦卡锡:我的人工智能之梦 一、引言:计算机科学的传奇人物…...

Scrapy结合Selenium实现搜索点击爬虫的最佳实践

一、动态网页爬取的挑战 动态网页通过JavaScript等技术在客户端动态生成内容,这使得传统的爬虫技术(如requests和BeautifulSoup)无法直接获取完整的内容。具体挑战包括: 数据加载异步化:数据并非一次性加载&#xff…...

Oracle数据库数据编程SQL<9.3 数据库逻辑备份和迁移Data Pump (EXPDP/IMPDP) 导出、导入补充>

Oracle Data Pump 是 Oracle 10g 引入的高效数据迁移工具,相比传统的 EXP/IMP 工具,它提供了更强大的功能和显著的性能提升。以下是对 EXPDP 和 IMPDP 工具的全面讲解。 目录 一、高级功能扩展 1. 数据过滤与转换 2. 加密与安全 二、性能调优进阶 1. 并行处理优化 2. …...

Vue 3 + TypeScript 实现一个多语言国际化组件(支持语言切换与内容加载)

文章目录 一、项目背景与功能概览二、项目技术架构与依赖安装2.1 技术栈2.2 安装依赖 三、国际化组件实现3.1 创建 i18n 实例3.2 配置 i18n 到 Vue 应用3.3 在组件中使用国际化内容3.4 支持语言切换 四、支持类型安全4.1 添加类型支持4.2 自动加载语言文件 一、项目背景与功能概…...

RK3506+net9+VS2022跨平台调试C#程序

下载GetVsDbg.sh ,这脚本会下载一个压缩包,然后解压缩,设置x权限等等。但是目标板子连不上,就想办法获取到下载路径,修改这个脚本,显示这个下载链接后,复制一下,用电脑下下来 修改好…...

c# 反射及优缺点

在C#中,反射(Reflection)是一种强大的机制,允许程序在运行时检查其自身的结构(如类型、属性、方法等),以及动态地调用对象的方法或访问其属性。反射主要用于那些在编译时不知道具体类型信息&…...

基于SpringBoot的在线教育系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏:…...

吴恩达深度学习复盘(16)决策树|节点纯度与熵

决策树简介 决策树算法在很多应用中被使用,机器学习比赛中会经常见到,但在流行病学领域未受到太多关注。 决策树示例 —— 猫的分类 以经营猫收养中心为例,通过动物的耳朵形状、脸型、是否有胡须等特征,来训练一个分类器判断动…...

C++基础精讲-07

文章目录 1. const对象2. 指向对象的指针3. 对象数组4. c中const常见用法总结4.1 修饰常量4.2 修饰指针4.3 修饰函数参数4.4 修饰函数返回值4.5 修饰成员函数4.6 const对象 5. 赋值运算符函数(补充)5.1 概念5.2 默认赋值运算符函数局限5.3 解决办法 1. c…...

100个有用的AI工具 之 生成透明图像LayerDiffuse

Stable Diffusion是开源图像生成界的扛把子,最强的地方在于它的可控性,通过ControlNet,和一系列插件,可以非常精准地控制图像生成的需求。 今天介绍的是SD的一个插件LayerDiffuse,它可以帮助我们用SD生成透明的png图层。我们在用PS抠图的时候,对于头发、毛绒边这种图是非…...

springboot和springcloud的区别

1. ‌目的与功能‌ ‌1)Spring Boot‌: 主要用于快速构建独立的、生产级的 Spring 应用程序。它通过自动配置和嵌入式服务器等特性,简化了微服务的开发、启动和部署,使开发者能够专注于业务逻辑而非繁琐的配置。‌Spring Boot是一个快速开发的框架,旨在简化Java应用程序的开…...

前端操作document的小方法,主要功能-获取当前页面全部的a标签页,并根据链接中必要的字段进行判断,然后把这些链接放入iframe去打开

首先是一些小方法,有一个问题就是在不同源的页面中无法获取iframe中的dom const isInIframe window.parent ! window.self; console.log(是否在 iframe 中:, isInIframe); console.log(来源页面:, document.referrer); const isSame new URL(document.referrer).o…...

RocketMQ 03

今天是2025/04/14 21:58 day 20 总路线请移步主页Java大纲相关文章 今天进行RocketMQ 6,7,8 个模块的归纳 最近在忙毕设,更新有点慢,见谅 首先是RocketMQ 的相关内容概括的思维导图 6. 安全机制 6.1 ACL 访问控制 核心功能 权限分级:通过…...

基于项目管理的轻量级目标检测自动标注系统【基于 YOLOV8】

🐱 AILabeler 是一个轻量级目标检测标注系统,专为 YOLO 系列模型设计,支持图像上传、标注框管理、类别设置、自动标注(YOLOv8)、导出多格式训练数据等功能。 项目已经发布至https://github.com/as501226107/AILabeler&…...

针对 Java从入门到精通 的完整学习路线图、各阶段技术点、CTO进阶路径以及经典书籍推荐。内容分阶段展开,兼顾技术深度与职业发展

以下是针对 Java从入门到精通 的完整学习路线图、各阶段技术点、CTO进阶路径以及经典书籍推荐。内容分阶段展开,兼顾技术深度与职业发展。 一、学习路线图分阶段详解 阶段1:Java基础入门(3-6个月) 目标:掌握Java核心…...

深度学习总结(13)

选择损失函数 为问题选择合适的损失函数,这是极其重要的。神经网络会采取各种方法使损失最小化,如果损失函数与成功完成当前任务不完全相关,那么神经网络最终的结果可能会不符合你的预期。因此,一定要明智地选择损失函数&#xf…...

AI测试引擎中CV和ML模型的技术架构

技术架构概述 1. 数据采集层 此层负责收集各种类型的数据,为后续的模型训练和测试提供基础。对于CV模型,主要采集图像、视频数据,可来源于摄像头、图像数据库等;对于ML模型,采集结构化数据(如表格数据)、非结构化数据(如文本数据)等,数据来源包括业务系统日志、传感…...

业务架构发展历史及相关技术应用介绍

1,单体架构 企业处于发展初期阶段,业务的开发量与用户的访问量较少的情况下,通常情况会将业务编写在一个应用中,由一个web容器完成部署调用。如下图,一个应用中所有的功能模块写在一个war包中,功能模块的代…...

Java栈与队列深度解析:结构、实现与应用指南

一、栈与队列核心概念对比 特性栈 (Stack)队列 (Queue)数据原则LIFO(后进先出)FIFO(先进先出)核心操作push(入栈)、pop(出栈)、peek(查看栈顶)offer(入队)、poll(出队)、peek(查看队首)典型应用函数调用栈、括号匹配、撤销操作任…...

CentOS DVD完整版与Minimal版的区别

文章目录 一、体积与内置软件:从“大而全”到“小而精”二、安装体验:开箱即用 vs 高度定制三、适用场景:桌面与服务器的分水岭四、后续配置:时间成本的权衡五、性能与资源占用六、推荐新手下载完整版建议: 在 CentOS…...

AI日报 - 2025年4月13日

🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI CFO称AGI可能已到来 Sarah Friar透露Sam Altman认为AGI潜力尚未完全发挥,引发行业热议 ▎💼 商业动向 | OpenAI开发新型AI工程师A-SWE 超越Copilot,能独立完成应用构建、…...

有哪些基于solidity的应用

🔥 Solidity 常见应用分类(附例子) 🏦 1. DeFi(去中心化金融) Solidity 的最大应用场景之一。 项目功能示例合约逻辑Uniswap去中心化交易所(AMM)流动性池、定价算法、swap函数Aave /…...

mybatis--多对一处理/一对多处理

多对一处理(association) 多个学生对一个老师 对于学生这边,关联:多个学生,关联一个老师[多对一] 对于老师而言,集合,一个老师有多个学生【一对多】 SQL: 测试环境搭建 1.导入依…...

中兴B860AV3.2-U-晶晨S905L3B芯片-安卓9.0-2+8G-线刷固件包

中兴B860AV3.1-U/B860AV3.2-U--晶晨S905L3B芯片-安卓9.0-28G-线刷固件包 线刷方法:(新手参考借鉴一下) 1、准备好一根双公头USB线刷刷机线,长度30-50CM长度最佳,同时准备一台电脑; 2、电脑上安…...

资源分配不均,如何优化

优化资源分配需要关注资源需求评估精准性、资源调度合理性、实时监控与反馈机制、沟通协调的高效性以及持续改进的管理理念。其中,资源需求评估精准性最为关键。精准的资源需求评估意味着对项目各阶段所需资源的准确把控,这能有效防止资源过剩或短缺现象…...

Kimi-VL 解读:高效 MoE 视觉语言模型VLM,兼顾长上下文与高分辨率

写在前面:一起读多模态大模型Kimi-VL Moonshot AI 推出了 Kimi-VL,一个高效的、开源的、基于混合专家(MoE)架构的视觉语言模型。Kimi-VL 旨在解决上述痛点,它具备以下几个核心特点: 高效 MoE 架构:语言解码器采用 MoE 架构,在保持强大能力的同时,显著降低了推理时的激…...

2024团体程序设计天梯赛L3-1 夺宝大赛

L3-037 夺宝大赛 分数 30 作者 陈越 单位 浙江大学 夺宝大赛的地图是一个由 nm 个方格子组成的长方形,主办方在地图上标明了所有障碍、以及大本营宝藏的位置。参赛的队伍一开始被随机投放在地图的各个方格里,同时开始向大本营进发。所有参赛队从一个方格…...

SpringBoot DevTools:开发工具与热部署机制

文章目录 引言一、Spring Boot DevTools概述二、自动重启机制2.1 工作原理2.2 自定义重启触发器 三、LiveReload支持3.1 浏览器自动刷新3.2 与前端框架集成 四、属性默认值调整4.1 缓存配置4.2 日志配置 五、远程开发支持5.1 配置远程应用5.2 使用远程客户端 总结 引言 在Java…...

PyCharm 开发工具 修改字体大小及使用滚轮没有反应

PyCharm 开发工具 修改字体大小及使用滚轮没有反应 提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是有学习/理解关联性,希望对您有用~ PyCharm 开发工具 修改字体大小及…...

小刚说C语言刷题——每日一题东方博宜1000熟悉OJ环境

1.题目描述 2.参考代码(C语言版&#xff09; #include <stdio.h> int main(void) { //定义两个整型变量num1和num2 int num1,num2; int sum;//定义两个数的和sum //下面语句表示输入两个数字 scanf("%d%d",&num1,&num2); sumnum1num…...

Ubuntu安装Docker容器,通过Tomcat部署项目

温馨提示&#xff1a;本教程不是最完美的&#xff0c;只能说是填鸭式教育&#xff0c;仅仅让你快速部署Docker的tomcat项目。 *******命令行需要一行一行操作哟&#xff01;&#xff01;&#xff01;******* 一、检查Ubuntu本地的Tomcat能发正常打开项目 1.1 检查本地tomcat是…...

ubuntu22.04安装zabbix7.0

一、安装repository wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0ubuntu24.04_all.deb dpkg -i zabbix-release_latest_7.0ubuntu24.04_all.deb apt update二、安装Zabbix server&#xff0c;Web前端&#xff0c;ag…...