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)和决定系数(R²)。这些指标可以帮助评估模型的预测精度,进一步调整模型超参数和结构。

  1. 模型的表现
    训练和测试误差:通过模型训练过程中观察训练和测试误差,可能发现训练集误差较低但测试集误差较高,暗示过拟合的存在。通过交叉验证和正则化技术可以有效解决这一问题。

时间依赖性:LSTM能够捕捉到较长时间跨度的数据关系,但有时也会遇到短期依赖的情况,可能需要调整网络层数、隐藏层维度等参数

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/92339.shtml
繁体地址,请注明出处:http://hk.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…

区块链赋能供应链金融:解决信任与效率问题

摘要: 随着全球经济一体化和数字化进程的加速,供应链金融在实体经济发展中的作用愈发关键。然而,传统供应链金融面临着信任机制薄弱和效率低下等诸多挑战。区块链技术凭借其去中心化、不可篡改、可追溯等特性,为供应链金融带来了创新的解决方案,能够有效解决信任与效率问题…