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

WITRAN_2DPSGMU_Encoder 类

以下是对 WITRAN_2DPSGMU_Encoder 类的主要逻辑和流程的图示化表示,帮助你更直观地理解代码的执行过程。


1. 整体流程图

输入数据 (input) [4, 32, 24, 11]
    ↓
【数据预处理】
1. 调整维度顺序 (permute)
   - 如果 flag=0: [4, 32, 24, 11]
   - 如果 flag=1: [32, 4, 24, 11]
    ↓
2. 计算扩展后的序列长度 Water2sea_slice_len = 27
    ↓
3. 初始化隐藏状态
   - hidden_slice_row [128, 32]
   - hidden_slice_col [128, 32]
    ↓
4. 滑动窗口填充
   - input_transfer [4, 32, 27, 11]
    ↓
【多层网络计算】
5. 遍历每一层 (num_layers)
    ↓
    【时间步计算】
    6. 遍历每个时间步 (Water2sea_slice_len = 27)
        ↓
        6.1 拼接输入
            - hidden_slice_row [128, 32]
            - hidden_slice_col [128, 32]
            - 当前时间步输入 a[:, slice, :] [128, 11]
            - 拼接后输入 [128, 75]
        ↓
        6.2 线性变换 (self.linear)
            - 输入 [128, 75]
            - 权重 W [192, 75]
            - 偏置 B [192]
            - 输出 gate [128, 192]
        ↓
        6.3 分割 gate
            - sigmod_gate [128, 128] → 更新门、输出门
            - tanh_gate [128, 64] → 输入门
        ↓
        6.4 更新隐藏状态
            - 更新行隐藏状态 hidden_slice_row [128, 32]
            - 更新列隐藏状态 hidden_slice_col [128, 32]
        ↓
        6.5 拼接输出
            - 拼接 hidden_slice_row 和 hidden_slice_col
            - 输出 output_slice [128, 64]
        ↓
        6.6 保存输出
            - 保存 output_slice 到 output_all_slice_list
            - 保存行隐藏状态到 hidden_row_all_list
            - 保存列隐藏状态到 hidden_col_all_list
    ↓
【残差连接】
7. 如果启用残差连接,将当前层的输出与第一层的输出相加
    ↓
【最终输出】
8. 堆叠所有时间步的输出
   - output_all_slice [128, 27, 64]
   - hidden_row_all [32, num_layers, 4, 32]
   - hidden_col_all [32, num_layers, 24, 32]
    ↓
返回结果

2. 图示化表示

(1) 数据预处理
输入数据 (input) [4, 32, 24, 11]
    ↓ permute
调整维度顺序 (flag=0 或 flag=1)
    ↓
扩展序列长度 Water2sea_slice_len = 27
    ↓
滑动窗口填充
    input_transfer [4, 32, 27, 11]
(2) 多层网络计算
遍历每一层 (num_layers)
    ↓
    遍历每个时间步 (Water2sea_slice_len = 27)
        ↓
        拼接输入
            hidden_slice_row [128, 32]
            hidden_slice_col [128, 32]
            当前时间步输入 a[:, slice, :] [128, 11]
            拼接后输入 [128, 75]
        ↓
        线性变换 (self.linear)
            输入 [128, 75]
            权重 W [192, 75]
            偏置 B [192]
            输出 gate [128, 192]
        ↓
        分割 gate
            sigmod_gate [128, 128] → 更新门、输出门
            tanh_gate [128, 64] → 输入门
        ↓
        更新隐藏状态
            hidden_slice_row [128, 32]
            hidden_slice_col [128, 32]
        ↓
        拼接输出
            output_slice [128, 64]
        ↓
        保存输出
            output_all_slice_list
            hidden_row_all_list
            hidden_col_all_list
(3) 残差连接
如果启用残差连接
    当前层输出 + 第一层输出
(4) 最终输出
堆叠所有时间步的输出
    output_all_slice [128, 27, 64]
    hidden_row_all [32, num_layers, 4, 32]
    hidden_col_all [32, num_layers, 24, 32]
返回结果

3. 关键点总结

  1. 输入数据

    • 输入是二维时间序列数据,按天和小时组织。
    • 通过滑动窗口扩展序列长度,捕获时间维度上的依赖关系。
  2. 门控机制

    • 类似于 LSTM 的门控机制,包含更新门、输出门和输入门。
    • 分别更新行隐藏状态和列隐藏状态。
  3. 多层结构

    • 支持多层网络,每层输出隐藏状态。
    • 可选残差连接,增强模型的表达能力。
  4. 最终输出

    • 返回每个时间步的输出,以及行隐藏状态和列隐藏状态。

通过以上图示化表示,可以更直观地理解 WITRAN_2DPSGMU_Encoder 的逻辑和执行流程。

相关文章:

  • Lombok库
  • 电子电器架构 --- 智能座舱的定义
  • [Linux]umask及其设置
  • 【prometheus+Grafana篇】Prometheus与Grafana:深入了解监控架构与数据可视化分析平台
  • 深度学习总结(12)
  • 10.第二阶段x64游戏实战-添加计时器
  • Mysql概述
  • MCP 认证考试常见技术难题实战分析与解决方案
  • Python(14)Python内置函数完全指南:从基础使用到高阶技巧
  • 爱普生EV7050EAN在ONT交换机的应用
  • GPT-SoVITS:5 步实现 AI 语音克隆
  • 测试用例如何编写
  • 破产计划:ESP32s3+UVC+ov2640实现免驱摄像头
  • CExercise_12_单链表面试题_3合并两条有序的单向链表,使得合并后的链表也是有序的 (要求: 不能额 外申请堆内存空间)
  • 数字人:开启医疗领域的智慧变革新时代(5/10)
  • 计算机三级第一章:信息安全保障概述(以时间节点推进的总结)
  • 【Linux】进程概念(一):冯诺依曼体系结构 + 操作系统
  • ElementNotInteractableException原因及解决办法
  • 基于大模型的轻症急性胰腺炎全流程预测与诊疗方案研究报告
  • java操作redis库,开箱即用
  • “五一”假期首日跨区域人员流动预计超3.4亿人次
  • 王毅谈金砖国家反恐和网络安全合作
  • 五一去哪玩?“时代交响”音乐会解锁艺术假期
  • 国际油价重挫!美股道指连跌三月,啥情况?
  • 顺利撤离空间站,神十九乘组踏上回家之旅
  • 南部战区位南海海域进行例行巡航