【SegRNN 源碼理解】【今天不水文系列】編碼器部分理解

我來小小的理解一下:

首先,16 batchsize,60sequendcelength,7 個特征的通俗解釋

16 個獨立的樣本,每個樣本有 60 個連續的時間步及對應的標簽值,每個時間步有 60 個特征

所以就是因為樣本是隨機從訓練集中采的,所以就假設采的是

樣本 1,樣本 6,樣本 109,樣本 334,樣本 354等等等,一共 16 個(這就是 batchsize,表示一個 batch中容納的樣本數)

接下來,每個樣本中連續的 60 個時間步,這個就很好理解了,但是這 60 個連續的時間步:

(0)樣本 1:可能從第 7 個時間開始.....跟著 60 個,后面緊跟著要預測的 24 個時間步,dataloader 讀數據時都封裝好了,會對應上的

(1)樣本 6:從第? 38 個時間開始.....

(2)樣本109:從第 1 個時間開始

......

(15)樣本 334:從第 129 個時間開始

總之就是這樣,然后每個時間有 7 個特征表示

接下來 16x60x7 --》 16×7×60

就是:

(0)樣本 1:特征 1[60個連續的時間步],特征 2,特征 3,,,,,特征 7

(1)樣本 6:特征 1,特征 2,特征 3,,,,,特征 7

(2)樣本109:特征 1,特征 2,特征 3,,,,,特征 7

......

(15)樣本 334:特征 1,特征 2,特征 3,,,,,特征 7

每個特征分別有 60 個連續的時間步

接下來呢,又開始對于這 60 個時間步,分段,分成 5 段,每段 12 個

然后呢,就把分出來的 段,12 維 統統喂到 linear 中,嵌入到 512 維,用的一個嵌入空間,所以嵌入時使用權值矩陣是一樣的,畢竟得在同一個準則下才有可比性,這一步就是學習了每一個小段內,時間之間的相關關系

代碼中搞事情:

它把樣本batch 維度和特征維度,混到一起寫,reshape 成(-1,seg_num_x,seg_dim)


(0)樣本 1-特征 1 :【12】【12】【12】【12】【12】

(0)樣本 1-特征 2?:【12】【12】【12】【12】【12】

....

(0)樣本 1-特征 7?:【12】【12】【12】【12】【12】


(1)樣本 6-特征 1 :【12】【12】【12】【12】【12】

(1)樣本 6-特征 2?:【12】【12】【12】【12】【12】

....

(1)樣本 6-特征 7?:【12】【12】【12】【12】【12】


(15)樣本 334-特征 1 :【12】【12】【12】【12】【12】

(15)樣本 334-特征 2?:【12】【12】【12】【12】【12】

....

(15)樣本 334-特征 7?:【12】【12】【12】【12】【12】


也就是 112 條序列、、、 112×5×12

linear 就是把所有的 12 全部嵌入到 512 維

112×5×512


(0)樣本 1-特征 1 :【512】【512】【512】【512】【512】→ 5步GRU → hn[0,0]

(0)樣本 1-特征 2?:【512】【512】【512】【512】【512】→ 5步GRU → hn[0,1]

....

(0)樣本 1-特征 7?:【512】【512】【512】【512】【512】→ 5步GRU → hn[0,6]


(1)樣本 6-特征 1 :【512】【512】【512】【512】【512】→ 5步GRU → hn[0,7]

(1)樣本 6-特征 2?:【512】【512】【512】【512】【512】→ 5步GRU → hn[0,8]

....

(1)樣本 6-特征 7?:【512】【512】【512】【512】【512】


(15)樣本 334-特征 1 :【512】【512】【512】【512】【512】

(15)樣本 334-特征 2?:【512】【512】【512】【512】【512】

....

(15)樣本 334-特征 7?:【512】【512】【512】【512】【512】→ 5步GRU → hn[0,111]


接下來 段內建模完了,那相鄰段之間的時間的關系還沒有建模呀,就把這些統統喂到 RNN 中,

RNN 把這個當做 5 個時間步,112 當成新的 batch,RNN 的 hiddensize 也設置成了 512(源碼中寫了),也就是?

單層 GRU(文中實際上用的 RNN 單元)

[序列 1] → 5步GRU → hn[0,0]
[序列 2] → 5步GRU → hn[0,1]
...
[序列 8] → 5步GRU → hn[0,7]
...
[序列 112] → 5步GRU → hn[0,111]

實際上這個 hn 應該是三維的,畢竟輸入就是三維的,h_n.shape=1×112×512

應該是:

[序列 1] →?hn[0, 0, :] - 批次0-特征0的最終隱藏狀態
[序列 2] →?hn[0, 1, :] - 批次0-特征1的最終隱藏狀態
...
[序列 8] →?hn[0, 7, :] - 批次1-特征0的最終隱藏狀態
...
[序列 112] →?hn[0, 111, :] - 批次15-特征6的最終隱藏狀態

如果模型使用了多層GRU(例如num_layers=2),則隱藏狀態的第一維將為2,我們會有:

  • hn[0,i,:]?- 第一層GRU對序列i的最終隱藏狀態
  • hn[1,i,:]?- 第二層GRU對序列i的最終隱藏狀態

但我們的num_layers=1

笑死,看了一天,居然覺得這么做也沒啥不好的,習慣這個有點反常識的表示了。

傳統 RNN 是:

16×60×7,其實就是:

(1)樣本 6:從第? 38 個時間開始.....?→ 60步GRU 建模? 7 維 →hn[0,0]?512 維(融合了所有時間步信息的 512 維)

(2)樣本109:從第 1 個時間開始→ 60步GRU 建模? 7 維→ hn[0,1] 512 維

......

(15)樣本 334:從第 129 個時間開始→ 60步GRU → hn[0,15] 512 維?

解碼的時候還原,其實是一樣的

  • 16個樣本確實是隨機采樣的,不一定是連續的樣本
  • 每個樣本的60個時間步確實是連續的時間序列片段
  • 不同樣本可以從各自時間序列的不同位置開始
  • "嵌入時使用權值矩陣是一樣的,畢竟得在同一個準則下才有可比性"
  • RNN把5個段作為5個時間步處理
  • 每個序列有自己獨立的隱藏狀態流
  • 所有序列共享同一個RNN的參數
  • 第一個維度0表示GRU層索引(因為只有1層)
  • 第二個維度i表示112個序列中的第i個
  • 第三個維度表示512維隱藏狀態
  • 傳統RNN: 每個批次作為一個整體,60個時間步直接輸入
  • SegRNN: 每個批次-特征組合作為獨立序列,5個段作為時間步輸入

明天看解碼過程

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72885.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72885.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72885.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

加速科技Flex10K-L測試機:以硬核創新重塑顯示驅動芯片測試新標桿!

在2024年召開的世界顯示產業創新發展大會上,加速科技自主研發的高密度顯示驅動芯片測試設備Flex10K-L憑借其突破性技術創新,成功入選"十大創新技術(產品)"。作為國內顯示驅動芯片測試領域的標桿性設備,Flex1…

Docker 部署 Vaultwarden

一、前言 1. 官網 1.1 Vaultwarden https://github.com/dani-garcia/vaultwarden https://github.com/wcjxixi/Vaultwarden-Wiki-Chn https://hub.docker.com/r/vaultwarden/server https://rs.ppgg.in/ # Vaultwarden Wiki 中文版 https://geekdaxue.co/read/Vaultward…

如何下載和使用Git:初學者指南

🌟 如何下載和使用Git:初學者指南 在當今的軟件開發中,Git已經成為不可或缺的版本控制系統。無論你是獨立開發者還是團隊成員,掌握Git的基本操作都能幫助你更高效地管理代碼。今天,我將詳細介紹如何下載和使用Git&…

doris: SQL Server

Doris JDBC Catalog 支持通過標準 JDBC 接口連接 SQL Server 數據庫。本文檔介紹如何配置 SQL Server 數據庫連接。 使用須知? 要連接到 SQL Server 數據庫,您需要 SQL Server 2012 或更高版本,或 Azure SQL 數據庫。 SQL Server 數據庫的 JDBC 驅動…

Leetcode 刷題記錄 05 —— 普通數組

本系列為筆者的 Leetcode 刷題記錄,順序為 Hot 100 題官方順序,根據標簽命名,記錄筆者總結的做題思路,附部分代碼解釋和疑問解答。 目錄 01 最大子數組和 方法一:動態規劃(卡達尼算法) 方法…

《DataWorks 深度洞察:量子機器學習重塑深度學習架構,決勝復雜數據戰場》

在數字化浪潮洶涌澎湃的當下,大數據已然成為推動各行業發展的核心動力。身處這一時代洪流,企業對數據的處理與分析能力,直接關乎其競爭力的高低。阿里巴巴的DataWorks作為大數據領域的扛鼎之作,憑借強大的數據處理與分析能力&…

wordpress自定the_category的輸出結構

通過WordPress的過濾器the_category來自定義輸出內容。方法很簡單,但是很實用。以下是一個示例代碼: function custom_the_category($thelist, $separator , $parents ) {// 獲取當前文章的所有分類$categories get_the_category();if (empty($categ…

2025牛客寒假算法基礎集訓營6

A.復制雞 思路&#xff1a;比較簡單&#xff0c;略。 void solve() {int n, m, k;cin >> n;int last -1, ans 0;for (int i 0; i<n; i){int x;cin >> x;if (x ! last){ans;}last x;}cout << ans << endl; } B.好伙計猜拳 思路&#xff1a;這…

【C#】詳解C#中的內存管理機制

文章目錄 前言一、C#內存管理的基本機制&#xff08;1&#xff09;托管堆&#xff08;Managed Heap&#xff09;&#xff08;2&#xff09;垃圾回收&#xff08;Garbage Collection&#xff09;&#xff08;3&#xff09;棧內存 二、 開發者需要主動管理的場景&#xff08;1&am…

ROS云課基礎題庫-01C++案例-甜甜圈

效率是核心&#xff0c;但效率高的教程會忽略掉非常多的細節。 解決問題的思路和細節對于一個問題的有效求解至關重要。 資料 云課五分鐘-02第一個代碼復現-終端甜甜圈C-CSDN博客 從云課五分鐘到五秒鐘焦慮的甜甜圈向前沖-CSDN博客 說明 復現重要性沒有那么大&#xff0c;…

C/S架構與B/S架構

一、定義與核心區別 C/S架構&#xff08;Client/Server&#xff0c;客戶端/服務器&#xff09; 客戶端需安裝專用軟件&#xff08;如QQ、企業ERP系統&#xff09;&#xff0c;直接與服務器通信。服務器端通常包括數據庫和業務邏輯處理1。特點&#xff1a;客戶端承擔部分計算任務…

【匯編語言】單片機程序執行過程

一、任務需求 指示燈LED4閃爍&#xff0c;亮0.5秒&#xff0c;滅0.5秒&#xff0c;無限循環 二、針對硬件的編程 1、確定原理圖2、確定硬件的物理關系 三、設計步驟 1.用自己的語言描述工作流程 1.1指示燈LED4亮1.2延時0.5秒1.3指示燈LED4滅1.4延時0.5秒1.5跳轉到1.1步 …

openharmony 富對富 WiFi投屏設計

castengine_wifi_display部件別名Sharing&#xff0c;媒體分享之意。擁有流媒體協議接入、媒體預覽、媒體轉分發能力&#xff0c;受投播管理服務管理和調用&#xff0c;是音視頻投播子系統重要的流媒體能力部件。提供一套簡單的Native C的接口&#xff0c;主要業務是Miracast投…

Android項目優化同步速度

最近項目需要使用ffmpeg&#xff0c;需要gradle配置引入ffmpeg庫&#xff0c;發現原來通過google官方的代碼倉&#xff0c;下載太慢了&#xff0c;每秒KB級別的速度。&#xff08;之前下gradle/gradle plugin都不至于這么慢&#xff09;&#xff0c;于是想到配置國內鏡像源來提…

Git 如何配置多個遠程倉庫和免密登錄?

自我簡介&#xff1a;4年導游&#xff0c;10年程序員&#xff0c;最近6年一直深耕低代碼領域&#xff0c;分享低代碼和AI領域見解。 通用后臺管理系統 代號&#xff1a;虎鯨 緣由 每次開發后臺界面都會有很多相同模塊&#xff0c;嘗試抽離出公共模塊作為快速開發的基座。 目標…

JVM組成面試題及原理

Java Virtual Machine&#xff08;JVM&#xff09;是Java程序的運行環境&#xff08;java二進制字節碼的運行環境&#xff09; 好處&#xff1a; 一次編寫&#xff0c;到處運行自動內存管理&#xff0c;垃圾回收機制 JVM由哪些部分組成&#xff0c;運行流程是什么&#xff1f;…

江科大51單片機筆記【11】AT24C02數據存儲秒表

一、數據存儲 先把需要的模塊導入做個測試 //main.c#include <REGX52.H> #include " LCD1602.h" #include " Key.h"void main() {LCD_Init();LCD_ShowString(1,1,"Hello");while(1){}} 代碼思路 分成兩塊寫&#xff0c;一塊寫I2C.c&am…

Hadoop的運行模式

Hadoop的運行模式 1、本地運行模式2、偽分布式運行模式3、完全分布式運行模式4、區別與總結 Hadoop有三種可以運行的模式&#xff1a;本地運行模式、偽分布式運行模式和完全分布式運行模式 1、本地運行模式 本地運行模式無需任何守護進程&#xff0c;單機運行&#xff0c;所有…

2.裝飾器模式

概述 裝飾器模式&#xff1a;在原有結構&#xff0c;動態地為對象添加職責&#xff0c;它是一種靈活的擴展功能方式。 業務場景&#xff1a;創建訂單 假設你正在開發一個電商系統&#xff0c;用戶在創建訂單時可以選擇不同的服務&#xff08;如折扣、配送、禮品包裝等&#…

C++11新特性 10.初始化列表、initializer_list

目錄 一.初始化列表 使用示例 二.initializer_list 1.基本概念 2.使用示例 一.初始化列表 C11提供的統一初始化方式&#xff0c;實現直接對數據初始化 使用示例 /* 初始化列表 */ #include <iostream> using namespace std; class Person { public:Person(string…