pytorch LSTM 結構詳解

最近項目用到了LSTM ,但是對LSTM 的輸入輸出不是很理解,對此,我詳細查找了lstm 的資料

import torch.nn as nnclass LSTMModel(nn.Module):def __init__(self, input_size=1, hidden_size=50, num_layers=2):super(LSTMModel, self).__init__()self.hidden_size = hidden_sizeself.num_layers = num_layersself.lstm = nn.LSTM(input_size, hidden_size, num_layers, batch_first=True)self.fc = nn.Linear(hidden_size, 1)  # 1 表示預測輸出變量為1def forward(self, x):h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_size)out, _ = self.lstm(x, (h0, c0))out = self.fc(out[:, -1, :])return out # out 形狀為(batch_size,1)
  • input_size=1:輸入特征的維度,適用于單變量時間序列。

  • hidden_size=50:LSTM 隱藏層的維度,決定了模型的記憶能力。

  • num_layers=2:堆疊的 LSTM 層數,增加層數可以提升模型的表達能力。

  • batch_first=True:指定輸入和輸出的張量形狀為 (batch_size, seq_len, input_size)

  • self.fc:一個全連接層,將 LSTM 的輸出映射到最終的預測值。

  • batch_size 表示批次、seq_len 表示窗口大小、input_size 表示輸入尺寸,單變量輸入為1 ,多變量要基于個數變化

  • 初始化隱藏狀態和細胞狀態

    • h0c0 分別表示初始的隱藏狀態和細胞狀態,形狀為 (num_layers, batch_size, hidden_size)

    • 在每次前向傳播時,初始化為零張量。

  • LSTM 層處理

    • self.lstm(x, (h0, c0)):將輸入 x 和初始狀態傳入 LSTM 層,輸出 out 和新的狀態。

    • out 的形狀為 (batch_size, seq_len, hidden_size),包含了每個時間步的輸出。

  • 全連接層映射

    • out[:, -1, :]:提取序列中最后一個時間步的輸出。

    • self.fc(...):將提取的輸出通過全連接層,得到最終的預測結果。

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

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

相關文章

AUTOSAR AP 入門0:AUTOSAR_EXP_PlatformDesign.pdf

AUTOSAR AP官網:AUTOSAR Adaptive Platform設計AUTOSAR AP的目的,翻譯版官方文檔 AUTOSAR_EXP_PlatformDesign.pdf : https://mp.weixin.qq.com/s?__bizMzg2MzAyMDIzMQ&mid2247553050&idx2&sn786c3a1f153acf99b723bf4c9832acaf …

零碳辦會新范式!第十屆國際貿易發展論壇——生物能源和可持續發展專場,在京舉辦

2025年5月16日,第十屆國際貿易發展論壇在北京國際飯店盛大啟幕。本屆論壇由北京綠林認證有限公司主辦。作為匯聚行業智慧、引領發展方向的盛會,國際貿易發展論壇每兩年一屆,本次會議是第十屆,至今已走過近20年光輝歷程。多年來&am…

ECharts圖表工廠,完整代碼+思路邏輯

Echart工廠支持柱狀圖(bar)折線圖(line)散點圖(scatter)餅圖(pie)雷達圖(radar)極坐標柱狀圖(polarBar)和極坐標折線圖(po…

如何制作令人印象深刻的UI設計?

1. 規劃用戶旅程 規劃用戶旅程是創建高效且吸引人的UI設計的第一步。設計師需要深入了解目標用戶群體的需求和行為模式,這通常涉及用戶調研、創建用戶角色(Personas)和繪制用戶旅程圖(User Journey Maps)。通過這種方…

k8s 離線安裝 kube-prometheus-stack

配置共享存儲 Prometheus 需要配置持久化存儲,防止數據丟失 服務端 服務端安裝 NFS 服務 sudo apt install nfs-kernel-server 創建共享目錄,在服務器端創建 /nfs 目錄。 mkdir /nfs chmod -R 777 /nfs # 設置文件權限 nfs目錄下只給了默認權限&#xff…

ceph osd 磁盤分區對齊

分區對齊可以提高讀寫速度的原理是什么 分區對齊可以提高磁盤讀寫速度的原理主要在于 磁盤的物理扇區大小與操作系統發起的讀寫請求之間是否對齊。如果不對齊,每次讀寫操作可能會跨越多個物理扇區,造成額外的 I/O 操作,從而降低性能。 ?? 原理詳解 1. 物理扇區(Physica…

Simon J.D. Prince《Understanding Deep Learning》

學習神經網絡和深度學習推薦這本書,這本書站位非常高,且很多問題都深入剖析了,甩其他同類書籍幾條街。 多數書,不深度分析、沒有知識體系,知識點零散、章節之間孤立。還有一些人Tian所謂的權威,醒醒吧。 …

【泛微系統】后端開發Action常用方法

后端開發Action常用方法 代碼實例經驗分享:代碼實例 經驗分享: 本文分享了后端開發中處理工作流Action的常用方法,主要包含以下內容:1) 獲取工作流基礎信息,如流程ID、節點ID、表單ID等;2) 操作請求信息,包括請求緊急程度、操作類型、用戶信息等;3) 表單數據處理,展示…

SSH的screen方法

創建一個screen窗口,(在需要運行程序的文件夾內)使用 screen -S name 命令,其中 name 是窗口的名字。 在窗口中執行需要的命令。 當需要臨時離開時,使用快捷鍵 ctrlA D 回來時,使用 screen -r name 恢復…

無法訪問org.springframework.boot.SpringApplication

無法訪問org.springframework.boot.SpringApplication 檢查springboot和jdk的版本是否適配檢查jdk的設置是否統一 主要檢查下面幾處地方

洛谷 P1800 software(DP+二分)【提高+/省選?】

題目鏈接 https://www.luogu.com.cn/problem/P1800 思路 對于大于等于最優解的天數,一定能使公司交付軟件。對于小于最優解的天數,一定無法使公司交付軟件。所以考慮二分答案 x x x。 定義 f [ i ] [ j ] f[i][j] f[i][j]表示前 i i i個人做了 j j j…

C++性能測試工具——sysprof的使用

一、sysprof sysprof相對于前面的一些性能測試工具來說,要簡單不少。特別是其圖形界面的操作,非常容易上手,它還支持分析文件的保存和導入功能,這是一個非常不錯的功能。做為一款系統性能測試工具,它支持多種硬件平臺…

redis數據持久化和配置-15(備份和還原 Redis 數據)

備份和還原 Redis 數據 備份和恢復數據是管理任何數據庫系統(包括 Redis)的關鍵方面。數據丟失可能是由于硬件故障、軟件錯誤、意外刪除甚至惡意攻擊而發生的。因此,擁有強大的備份和恢復策略對于確保數據持久性和業務連續性至關重要。本課將…

【上位機——WPF】布局控件

布局控件 常用布局控件Panel基類Grid(網格)UniformGrid(均勻分布)StackPanel(堆積面板)WrapPanel(換行面板)DockerPanel(停靠面板)Canvas(畫布布局)Border(邊框)GridSplitter(分割窗口)常用布局控件 Grid:網格,根據自定義行和列來設置控件的布局StackPanel:棧式面板,包含的…

打卡Day33

簡單的神經網絡 數據的準備 # 仍然用4特征,3分類的鳶尾花數據集作為我們今天的數據集 from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split import numpy as np# 加載鳶尾花數據集 iris load_iris() X iris.data # …

python開發環境管理和包管理

在 Python 開發中,環境管理 和 包管理 是兩個非常重要的概念。它們幫助開發者: 這里寫目錄標題 一、什么是 Python 環境管理?二、什么是 Python 包管理?三、常見文件說明(用于包管理和環境配置)四、典型流程…

Mybatis面向接口編程

添加與Mapper接口的映射 <!--UserMapper.xml--> <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> …

GMP模型入門

go的并發實現采用的是M:N的線程模型&#xff0c;落地就是gmp模型。 M:N模型如下圖&#xff1a; gmp模型如下圖&#xff1a; --- Go 的 GMP 模型是其 高效并發調度機制的核心。GMP 代表&#xff1a; G&#xff1a;Goroutine&#xff08;用戶態線程&#xff09; M&#xff1a;…

達夢數據庫-報錯-01-[-3205]:全文索引詞庫加載出錯

目錄 一、環境信息 二、說點什么 三、模擬實驗 1、前臺啟動數據庫 2、重建全文索引報錯 3、日志信息 4、查找SYSWORD.UTF8.LIB 5、想一想加做一做 6、重啟數據庫 7、重建全文索引 8、總結 一、環境信息 名稱值CPU12th Gen Intel(R) Core(TM) i7-12700H操作系統CentO…

經典密碼學和現代密碼學的結構及其主要區別(1)維吉尼亞密碼—附py代碼

Vigenre cipher 維吉尼亞密碼 維吉尼亞密碼由布萊斯德維吉尼亞在 16 世紀發明&#xff0c;是凱撒密碼的一個更復雜的擴展。它是一種多字母替換密碼&#xff0c;使用一個關鍵字來確定明文中不同字母的多個移位值。 與凱撒密碼不同&#xff0c;凱撒密碼對所有字母都有固定的偏移…