当前位置: 首页 > 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库,开箱即用
  • 中国人民银行行长潘功胜会见世界银行行长彭安杰
  • 猿辅导武汉公司一员工猝死,死者亲属:他原计划5月2日举行婚礼
  • 富力地产:广州富力空港假日酒店第一次拍卖流拍,起拍价约2.77亿元
  • 港澳航天员最早2026年飞天
  • 去年净流入人口达45万,居各省份第一:浙江带来哪些启示?
  • “75后”遂宁市长刘会英调任四川省人社厅党组副书记