傳統RNN模型筆記:輸入數據長度變化的結構解析

一、案例背景

本案例通過PyTorch的nn.RNN構建單隱藏層RNN模型,重點展示RNN對變長序列數據的處理能力(序列長度從1變為20),幫助理解RNN的輸入輸出邏輯。

二、核心代碼與結構拆解

def dm_rnn_for_sequencelen():# 1. 定義RNN模型rnn = nn.RNN(5, 6, 1)  # input_size=5, hidden_size=6, num_layers=1# 2. 準備輸入數據input = torch.randn(20, 3, 5)  # 序列長度=20,批次大小=3,輸入維度=5# 3. 初始化隱狀態h0 = torch.randn(1, 3, 6)  # 層數×方向=1,批次大小=3,隱藏層維度=6# 4. 前向傳播output, hn = rnn(input, h0)# 輸出結果print('output形狀--->', output.shape)  # torch.Size([20, 3, 6])print('hn形狀--->', hn.shape)          # torch.Size([1, 3, 6])print('模型結構--->', rnn)             # RNN(5, 6)

三、關鍵參數詳解

1. 模型定義參數(nn.RNN

參數含義本案例取值說明
input_size輸入特征維度5每個時間步的輸入向量維度(如單詞的 embedding 維度)
hidden_size隱藏層輸出維度6每個時間步的隱狀態向量維度
num_layers隱藏層層數1單隱藏層結構,簡化計算

2. 輸入數據格式(input

  • 形狀:[sequence_length, batch_size, input_size]
  • 本案例:[20, 3, 5]
    • 20序列長度(sequence_length),每個樣本包含20個時間步(如一句話有20個單詞);
    • 3批次大小(batch_size),一次并行處理3個樣本;
    • 5輸入特征維度,與模型定義的input_size一致。

3. 初始隱狀態(h0

  • 形狀:[num_layers × num_directions, batch_size, hidden_size]
  • 本案例:[1, 3, 6]
    • 1num_layers × num_directions(1層+單向RNN);
    • 3:與輸入的batch_size一致,每個樣本對應一個初始隱狀態;
    • 6:與模型定義的hidden_size一致,初始隱狀態的維度。

四、輸出結果解析

1. output(所有時間步的隱藏層輸出)

  • 形狀:[sequence_length, batch_size, hidden_size]
  • 本案例:[20, 3, 6]
    • 包含每個時間步、每個樣本的隱藏層輸出(20個時間步×3個樣本×6維向量);
    • 體現RNN對序列的“逐步處理”特性,保留所有中間結果。

2. hn(最后一個時間步的隱狀態)

  • 形狀:[num_layers × num_directions, batch_size, hidden_size]
  • 本案例:[1, 3, 6]
    • 僅包含最后一個時間步(第20步)、每個樣本的隱狀態;
    • 因單隱藏層,hnoutput的最后一個時間步結果完全一致。

五、核心結論:RNN對變長序列的適應性

  • 序列長度可靈活變化:只要輸入特征維度(input_size)和批次大小(batch_size)不變,RNN可處理任意長度的序列(如示例1中長度=1,本案例中長度=20)。
  • 輸出形狀隨序列長度調整output的第一個維度始終等于輸入序列長度,體現RNN對時序數據的動態處理能力。

六、類比理解

將RNN比作“逐字閱讀的處理器”:

  • 輸入:3篇文章(batch_size=3),每篇20個單詞(sequence_length=20),每個單詞用5維向量表示(input_size=5);
  • 處理過程:每讀一個單詞(時間步),結合上一步的記憶(隱狀態),更新當前記憶(6維向量,hidden_size=6);
  • 輸出:output是每讀一個單詞時的記憶記錄,hn是讀完最后一個單詞的最終記憶。

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

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

相關文章

OpenLayers 快速入門(四)View 對象

看過的知識不等于學會。唯有用心總結、系統記錄,并通過溫故知新反復實踐,才能真正掌握一二 作為一名摸爬滾打三年的前端開發,開源社區給了我飯碗,我也將所學的知識體系回饋給大家,助你少走彎路! OpenLayers…

測試左移方法論

測試左移(Shift-Left Testing)?是一種軟件測試方法論,核心思想是將測試活動從傳統的開發后期(如系統測試、驗收測試階段)提前到軟件生命周期的更早期階段(如需求分析、設計、編碼階段)&#xf…

OpenCV(01)基本圖像操作、繪制,讀取視頻

圖像基礎 import cv2 as cv#讀取圖像 cv.imread(path,讀取方式)默認讀為彩色圖像 #cv.imread(path) cat cv.imread(E:\hqyj\code\opencv\images\\face.png)#顯示圖像 cv.imshow(window,img) cv.imshow(myimg,cat)print(cat) print(cat.shape) #(h,w,c) 元組(1,1) print(cat…

biji 1

1.應用層:為應用程序提供網絡服務。2.表示層:定義數據的格式,對數據進行壓縮、解壓縮、加密、解密、編碼、解碼。3.會話層:對通信雙方間的會話進行建立、維護、拆除-----session id---區分同一應用程序的不同進程4.傳輸層&#x…

mongodb的備份和還原(精簡)

1 官網下載對應版本msi2 運行msi mongodb-database-tools-windows-x86_64-100.12.2.msi3 將安裝地址加到環境變量 C:\Program Files\MongoDB\Tools\100\bin4 查看version mongodump --version mongorestore --version5 運行 備份命令 mongodump --host 127.0.0.1 --db dbname--…

Mac安裝Typescript報錯

目錄 Mac上安裝Typescript報錯: 原因分析 1. 默認 npm 全局安裝目錄的權限問題 2. Node.js 的安裝方式 如何解決?(無需每次用 `sudo`) 方法 1:修改 npm 全局目錄的權限(推薦) 方法 2:配置 npm 使用用戶級目錄 方法 3:使用 `nvm` 管理 Node.js(最推薦) 為什么建議避免…

spring-cloud概述

單體架構 把業務的所有功能實現都打包在一個war包或者jar包,這種方式就成為單體架構。 比如Spring課程中的博客系統,前端后端數據庫實現,都在一個項目中,這種架構就稱為單體架構. 舉個例子: 比如在電商系統中,我們…

android ROOM kotlin官方文檔完全學習

android ROOM kotlin官方文檔完全學習2.6 使用 Room 將數據保存到本地數據庫 | Android Developers (google.cn) 一、簡介 1.1 引入 dependencies {def room_version "2.6.1"implementation "androidx.room:room-runtime:$room_version"//如下三選一a…

DOM編程全解析:操作、事件與存儲實戰指南

引言:DOM——JavaScript與網頁交互的橋梁 DOM(文檔對象模型) 是JavaScript操作HTML/XML文檔的接口,它將網頁文檔抽象為一個樹形結構,允許開發者通過API動態修改文檔的內容、結構和樣式。無論是實現動態交互&#xff0…

Ansible命令

Ansible命令 ansible 常用命令 /usr/bin/ansible   #Ansibe AD-Hoc 臨時命令執行工具,常用于臨時命令的執行 /usr/bin/ansible-doc    #Ansible 模塊功能查看工具 /usr/bin/ansible-galaxy   #下載/上傳優秀代碼或Roles模塊 的官網平臺,基于網…

SY6974芯片添加enable充電控制節點

1. 需求描述項目背景:基于 Qualcomm MDM9x07 平臺的 4G MIFI 產品,使用 Silergy 公司的 SY6974 充電 IC需求內容: 在環境 /sys/class/power_supply/sy6794/enable 下增加一個 sysfs 節點,用于控制是否允許充電:cat /sy…

趣玩-Ollama-Llm-Chatrbot

軟件說明 這個軟件本人是從零開始實現的聊天機器人。基于Ollama(PythonApi ) Pyside,實現了聊天機器的基本功能,還有一些個性化的功能比如模型管理,敏感詞過濾,個性化主題設置,頭像設置等功能。…

在mac 上zsh 如何安裝最新的 go 工具

文章目錄方法一:使用 Homebrew(推薦)方法二:從官網下載安裝包方法三:使用 g(Go 版本管理器)方法四:使用 gvm(Go Version Manager)驗證安裝和配置常用 Go 工具…

(十九)深入了解 AVFoundation-編輯:使用 AVMutableVideoComposition 實現視頻加水印與圖層合成(上)——理論篇

一、引言在短視頻、Vlog、剪輯工具日益流行的今天,給視頻添加 Logo、水印、時間戳或動態貼紙,已經成為非常常見的功能需求。這類效果看似簡單,其實背后都涉及到“圖層合成”的處理:如何將一個靜態或動態的圖層(如文字、…

Android NDK與JNI深度解析

核心概念定義:NDK (Native Development Kit): 是什么: 一套由 Google 提供的工具集合。目的: 允許 Android 開發者使用 C 和 C 等原生(Native)語言來實現應用程序的部分功能。包含內容: 交叉編譯器&#xf…

Golang各版本特性

1. Go各版本特性 | FeelingLife 2. https://chatgpt.com/share/68808f58-ae5c-800a-8153-5358098f301b 3.https://tonybai.com/2024/11/14/go-map-use-swiss-table/

HTML 轉 Word API 接口

HTML 轉 Word API 接口 支持網頁轉 Word,高效轉換為 Word,提供永久鏈接。 1. 產品功能 超高性能轉換效率;支持將傳遞的 HTML 轉換為 Word,支持 HTML 中的 CSS 格式在 Word 文檔中的呈現;支持傳遞網站的 URL&#xff…

Lucid Search: 極簡、隱私友好的問答式搜索引擎技術解析

Lucid Search: 極簡、隱私友好的問答式搜索引擎技術解析 產品定位與價值主張 Lucid Search 是一款革命性的問答式搜索引擎,其核心價值在于: 極簡體驗:無賬戶、無廣告、前端完全靜態隱私保護:不寫入 Cookie、不記錄 IP、無追蹤即…

卷積神經網絡:模型評估標準

一、分類模型評價指標在模型評估中,有多個標準用于衡量模型的性能,這些標準包括準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1 分數(F1-Score)等…

【前端工程化】前端開發中想做好發布管理可以從哪些方面著手?

在企業級后臺系統中,發布管理是整個開發流程的最終環節,也是最為關鍵的一環。它不僅涉及代碼構建完成后的部署操作,還包括版本控制、灰度發布、回滾機制等保障系統穩定性的措施。 本文主要圍繞發布流程設計、版本控制、部署方式、灰度策略和回…