R4周打卡——Pytorch實現 LSTM火災預測

  • 🍨 本文為🔗365天深度學習訓練營 中的學習記錄博客
  • 🍖 原作者:K同學啊

一、準備工作

在這里插入圖片描述

1.1導入數據

在這里插入圖片描述

1.2數據集可視化

在這里插入圖片描述
在這里插入圖片描述

二、構建數據集

2.1數據集預處理

在這里插入圖片描述

2.2設置X、Y

在這里插入圖片描述

2.3檢查數據集中有沒有空值

在這里插入圖片描述

2.4劃分數據集

在這里插入圖片描述
在這里插入圖片描述

三、構建模型

在這里插入圖片描述

3.1定義訓練函數

在這里插入圖片描述

3.2定義測試函數

在這里插入圖片描述

四、訓練模型

#訓練模型
model = model_lstm()
model = model.to(device)
loss_fn    = nn.MSELoss() # 創建損失函數
learn_rate = 1e-1   # 學習率
opt        = torch.optim.SGD(model.parameters(),lr=learn_rate,weight_decay=1e-4)
epochs     = 50
train_loss = []
test_loss  = []
lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingLR(opt,epochs, last_epoch=-1) for epoch in range(epochs):model.train()epoch_train_loss = train(train_dl, model, loss_fn, opt, lr_scheduler)model.eval()epoch_test_loss = test(test_dl, model, loss_fn)train_loss.append(epoch_train_loss)test_loss.append(epoch_test_loss)template = ('Epoch:{:2d}, Train_loss:{:.5f}, Test_loss:{:.5f}')print(template.format(epoch+1, epoch_train_loss,  epoch_test_loss))print("="*20, 'Done', "="*20)

輸出

learning rate = 0.09990  Epoch: 1, Train_loss:0.00120, Test_loss:0.01197
learning rate = 0.09961  Epoch: 2, Train_loss:0.01372, Test_loss:0.01150
learning rate = 0.09911  Epoch: 3, Train_loss:0.01330, Test_loss:0.01102
learning rate = 0.09843  Epoch: 4, Train_loss:0.01282, Test_loss:0.01050
learning rate = 0.09755  Epoch: 5, Train_loss:0.01228, Test_loss:0.00993
learning rate = 0.09649  Epoch: 6, Train_loss:0.01166, Test_loss:0.00931
learning rate = 0.09524  Epoch: 7, Train_loss:0.01094, Test_loss:0.00863
learning rate = 0.09382  Epoch: 8, Train_loss:0.01013, Test_loss:0.00790
learning rate = 0.09222  Epoch: 9, Train_loss:0.00922, Test_loss:0.00712
learning rate = 0.09045  Epoch:10, Train_loss:0.00823, Test_loss:0.00631
learning rate = 0.08853  Epoch:11, Train_loss:0.00718, Test_loss:0.00550
learning rate = 0.08645  Epoch:12, Train_loss:0.00611, Test_loss:0.00471
learning rate = 0.08423  Epoch:13, Train_loss:0.00507, Test_loss:0.00397
learning rate = 0.08187  Epoch:14, Train_loss:0.00409, Test_loss:0.00330
learning rate = 0.07939  Epoch:15, Train_loss:0.00322, Test_loss:0.00272
learning rate = 0.07679  Epoch:16, Train_loss:0.00247, Test_loss:0.00223
learning rate = 0.07409  Epoch:17, Train_loss:0.00185, Test_loss:0.00183
learning rate = 0.07129  Epoch:18, Train_loss:0.00137, Test_loss:0.00152
learning rate = 0.06841  Epoch:19, Train_loss:0.00100, Test_loss:0.00128
learning rate = 0.06545  Epoch:20, Train_loss:0.00073, Test_loss:0.00110
learning rate = 0.06243  Epoch:21, Train_loss:0.00054, Test_loss:0.00097
learning rate = 0.05937  Epoch:22, Train_loss:0.00040, Test_loss:0.00087
learning rate = 0.05627  Epoch:23, Train_loss:0.00031, Test_loss:0.00079
learning rate = 0.05314  Epoch:24, Train_loss:0.00024, Test_loss:0.00073
learning rate = 0.05000  Epoch:25, Train_loss:0.00020, Test_loss:0.00069
learning rate = 0.04686  Epoch:26, Train_loss:0.00017, Test_loss:0.00066
learning rate = 0.04373  Epoch:27, Train_loss:0.00015, Test_loss:0.00063
learning rate = 0.04063  Epoch:28, Train_loss:0.00013, Test_loss:0.00061
learning rate = 0.03757  Epoch:29, Train_loss:0.00012, Test_loss:0.00059
learning rate = 0.03455  Epoch:30, Train_loss:0.00012, Test_loss:0.00058
learning rate = 0.03159  Epoch:31, Train_loss:0.00011, Test_loss:0.00057
learning rate = 0.02871  Epoch:32, Train_loss:0.00011, Test_loss:0.00056
learning rate = 0.02591  Epoch:33, Train_loss:0.00011, Test_loss:0.00055
learning rate = 0.02321  Epoch:34, Train_loss:0.00011, Test_loss:0.00055
learning rate = 0.02061  Epoch:35, Train_loss:0.00011, Test_loss:0.00055
learning rate = 0.01813  Epoch:36, Train_loss:0.00011, Test_loss:0.00055
learning rate = 0.01577  Epoch:37, Train_loss:0.00011, Test_loss:0.00055
learning rate = 0.01355  Epoch:38, Train_loss:0.00012, Test_loss:0.00056
learning rate = 0.01147  Epoch:39, Train_loss:0.00012, Test_loss:0.00056
learning rate = 0.00955  Epoch:40, Train_loss:0.00012, Test_loss:0.00057
learning rate = 0.00778  Epoch:41, Train_loss:0.00013, Test_loss:0.00058
learning rate = 0.00618  Epoch:42, Train_loss:0.00013, Test_loss:0.00059
learning rate = 0.00476  Epoch:43, Train_loss:0.00013, Test_loss:0.00060
learning rate = 0.00351  Epoch:44, Train_loss:0.00014, Test_loss:0.00060
learning rate = 0.00245  Epoch:45, Train_loss:0.00014, Test_loss:0.00061
learning rate = 0.00157  Epoch:46, Train_loss:0.00014, Test_loss:0.00061
learning rate = 0.00089  Epoch:47, Train_loss:0.00014, Test_loss:0.00061
learning rate = 0.00039  Epoch:48, Train_loss:0.00014, Test_loss:0.00061
learning rate = 0.00010  Epoch:49, Train_loss:0.00014, Test_loss:0.00061
learning rate = 0.00000  Epoch:50, Train_loss:0.00014, Test_loss:0.00061
==================== Done ====================

4.1Loss圖

在這里插入圖片描述

4.2調用模型進行預測

在這里插入圖片描述

4.3R2值評估

在這里插入圖片描述

五、總結

  1. LSTM模型的核心優勢
    時間序列數據的建模能力:LSTM(長短時記憶網絡)專門設計來處理和預測序列數據中的長期依賴關系。在火災溫度預測這種時間序列問題中,LSTM能夠有效捕捉過去溫度數據與未來溫度之間的關聯,尤其在火災數據中,溫度往往有較強的時間依賴性。

解決梯度消失問題:傳統的RNN在長時間序列中容易遇到梯度消失問題,而LSTM通過引入記憶單元(cell state)和門控機制有效地緩解了這一問題,能夠記住遠期的信息。

  1. PyTorch的使用
    靈活性和易用性:PyTorch框架提供了非常簡潔的API,并且在實現LSTM時具有高度的靈活性,能方便地調整網絡結構、訓練參數及優化方法。

調試和可視化:PyTorch的動態計算圖使得調試過程更加直觀,尤其是在處理復雜的深度學習模型時,可以逐步查看模型輸出、梯度等中間結果。

  1. 模型訓練與評估
    數據預處理的重要性:時間序列數據的預處理,尤其是數據標準化或歸一化,能夠顯著提高LSTM模型的訓練效果。溫度數據可能存在波動和不規律的變化,因此,去噪和處理缺失數據是模型成功的關鍵因素。

模型評估:對于回歸任務,如火災溫度預測,常用的評估指標包括均方誤差(MSE)、均方根誤差(RMSE)和決定系數(R2)。這些指標可以幫助評估模型的預測精度,進一步調整模型超參數和結構。

  1. 模型的表現
    訓練和測試誤差:通過模型訓練過程中觀察訓練和測試誤差,可能發現訓練集誤差較低但測試集誤差較高,暗示過擬合的存在。通過交叉驗證和正則化技術可以有效解決這一問題。

時間依賴性:LSTM能夠捕捉到較長時間跨度的數據關系,但有時也會遇到短期依賴的情況,可能需要調整網絡層數、隱藏層維度等參數

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

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

相關文章

【視覺識別】Ubuntu 22.04 上編譯安裝OPENCV 4.12.0 魯班貓V5

系列文章目錄 提示:這里可以添加系列文章的所有文章的目錄,目錄需要自己手動添加 例如:第一章 Python 機器學習入門之pandas的使用 提示:寫完文章后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目…

基于vue的財務管理系統/基于php的財務管理系統

基于vue的財務管理系統/基于php的財務管理系統

機器學習技術在訂單簿大單檢測中的應用研究

訂單簿數據的特點 訂單簿(Order Book)是記錄市場上所有未成交買賣訂單的數據結構,通常包括價格、數量、買賣方向等信息。訂單簿數據具有以下特點: 高頻率:訂單簿數據更新速度極快,通常以毫秒甚至微秒為單位…

Spring MVC框架中DispatcherServlet詳解

1. DispatcherServlet概述1.1 什么是DispatcherServlet?DispatcherServlet是Spring MVC框架的核心組件,它本質上是一個Java Servlet,作為前端控制器(Front Controller)負責接收所有HTTP請求,并根據特定規則將請求分發到相應的處理…

DBA急救手冊:拆解Oracle死鎖圖,ORA-00060錯誤秒級定位終極指南

關于“死鎖圖”(Deadlock Graph)的一點淺見 當 Oracle 檢測到死鎖時,檢測到死鎖的會話中的當前 SQL 將被取消,并執行“語句級回滾”,以釋放資源并避免阻塞所有活動。 檢測到死鎖的會話仍然“存活”,并且事務…

C++中的默認函數學習

今天在學習QT別人的項目時看到有個函數在聲明和調用時參數個數不一樣,查了下是c中的一種函數類型,這個類型的函數可以讓代碼更簡潔、靈活。定義:在函數聲明時,給某些參數預先設定一個默認值。調用函數時,如果省略這些參…

HBase分片技術實現

HBase分片技術實現概述HBase是基于Hadoop的分布式、可擴展的NoSQL數據庫,采用列族存儲模型。HBase的分片機制通過Region自動分割和負載均衡實現水平擴展,支持PB級數據存儲和高并發訪問。HBase架構核心組件HMaster: 集群管理節點,負責Region分…

Python爬蟲實戰:研究awesome-python工具,構建技術資源采集系統

1. 引言 1.1 研究背景 Python 憑借語法簡潔、生態豐富等特點,已成為全球最受歡迎的編程語言之一。截至 2024 年,PyPI(Python Package Index)上的第三方庫數量已突破 45 萬個,涵蓋從基礎工具到前沿技術的全領域需求。然而,海量資源也帶來了 "信息過載" 問題 —…

【實時Linux實戰系列】實時視頻監控系統的開發

隨著技術的不斷發展,實時視頻監控系統在安防、交通管理、工業自動化等領域得到了廣泛應用。實時Linux系統因其高效的實時性和穩定性,成為開發高性能視頻監控系統的理想選擇。掌握基于實時Linux的視頻監控系統開發技能,對于開發者來說不僅能夠…

力扣-11.盛最多水的容器

題目鏈接 11.盛最多水的容器 class Solution {public int maxArea(int[] height) {int res 0;for (int i 0, j height.length - 1; i < j; ) {res Math.max(res, Math.min(height[i], height[j]) * (j - i));if (height[i] < height[j]) {i;} else {j--;}}return r…

大型音頻語言模型論文總結

大型音頻語言模型&#xff08;Large Audio Language Model, LALM&#xff09;是一類基于深度學習的智能系統&#xff0c;專門針對音頻信號&#xff08;如語音、音樂、環境聲等&#xff09;進行理解、生成、轉換和推理。它借鑒了大型語言模型&#xff08;LLM&#xff09;的“預訓…

如何解決網頁視頻課程進度條禁止拖動?

function skip() {let video document.getElementsByTagName(video)for (let i0; i<video.length; i) {video[i].currentTime video[i].duration} } setInterval(skip,6666)無法拖動視頻進度。 使用F12啟動調試模式。 function skip() {let video document.getElements…

基于deepSeek的流式數據自動化規則清洗案例【數據治理領域AI帶來的改變】

隨著AI大模型的大量普及&#xff0c;對于傳統代碼模式產生了不小的影響&#xff0c;特別是對于大數據領域&#xff0c;傳統的規則引擎驅動的數據治理已經無法滿足數據增長帶來的治理需求。因此主動型治理手段逐漸成為主流&#xff0c;因此本文介紹一個基于deepSeek的流式數據自…

【論文分析】【Agent】SEW: Self-Evolving Agentic Workflows for Automated Code Generatio

1.論文信息標題&#xff1a;SEW: Self-Evolving Agentic Workflows for Automated Code Generatio&#xff1a;用于自動代碼生成的自我進化的代理工作流程收錄的會議/期刊&#xff1a;作者信息&#xff1a;arxiv&#xff1a;&#x1f517;github網站&#xff1a;&#x1f517;g…

MCP 協議:AI 時代的 “萬能轉接頭”,從 “手動粘貼” 到 “萬能接口”:MCP 協議如何重構 AI 工具調用規則?

注&#xff1a;此文章內容均節選自充電了么創始人&#xff0c;CEO兼CTO陳敬雷老師的新書《GPT多模態大模型與AI Agent智能體》&#xff08;跟我一起學人工智能&#xff09;【陳敬雷編著】【清華大學出版社】 清華《GPT多模態大模型與AI Agent智能體》書籍配套視頻課程【陳敬雷…

VUE本地構建生產環境版本用于局域網訪問

&#x1f680;構建生產環境版本用于局域網訪問&#xff08;適用于 Vue 項目&#xff09; 在開發 Vue 項目的過程中&#xff0c;很多人使用 yarn serve 啟動開發服務器進行調試。但開發模式存在以下問題&#xff1a; 訪問速度慢&#xff0c;特別是局域網訪問&#xff1b;熱更新頻…

【密碼學】5. 公鑰密碼

這里寫自定義目錄標題公鑰密碼密碼學中的常用數學知識群、環、域素數和互素數模運算模指數運算費爾馬定理、歐拉定理、卡米歇爾定理素性檢驗歐幾里得算法中國剩余定理&#xff08;CRT&#xff09;離散對數二次剩余循環群循環群的選取雙線性映射計算復雜性公鑰密碼體制的基本概念…

VINS-Fusion+UWB輔助算法高精度實現

VINS-FusionUWB輔助算法高精度實現 摘要 本文詳細介紹了基于VINS-Fusion框架結合UWB輔助的高精度定位算法實現。通過將視覺慣性里程計(VIO)與超寬帶(UWB)測距技術融合&#xff0c;顯著提高了復雜環境下的定位精度和魯棒性。本文首先分析了VINS-Fusion和UWB各自的技術特點&#…

新手向:Python實現簡易計算器

你是否一直想學習編程但不知從何入手&#xff1f;這篇詳細的教程將帶領完全零基礎的讀者&#xff0c;循序漸進地掌握如何用Python實現一個簡易計算器。我們將從最基本的編程概念講起&#xff0c;確保每一位初學者都能跟上進度。準備工作在開始之前&#xff0c;你需要&#xff1…

區塊鏈賦能供應鏈金融:解決信任與效率問題

摘要: 隨著全球經濟一體化和數字化進程的加速,供應鏈金融在實體經濟發展中的作用愈發關鍵。然而,傳統供應鏈金融面臨著信任機制薄弱和效率低下等諸多挑戰。區塊鏈技術憑借其去中心化、不可篡改、可追溯等特性,為供應鏈金融帶來了創新的解決方案,能夠有效解決信任與效率問題…