RNN天气预测

本文为为🔗365天深度学习训练营内部文章

原作者:K同学啊

 与上篇一样,依然是二维数据结构。这里通过构建基础的网络块来做天气类别的预测,网络如下:

'''
预测是否下雨
'''
# 1.搭建神经网络
model = Sequential()
# 添加第一密集层,包含 24 个神经元(units),激活函数为双曲正切(tanh)
model.add(Dense(units=24,activation='tanh'))
model.add(Dense(units=18,activation='tanh'))
model.add(Dense(units=23,activation='tanh'))
# 添加一个 Dropout 层,其比例为 50%。这是为了防止模型过拟合,随机丢弃一定比例的神经元以增强模型的泛化能力
model.add(Dropout(0.5))
model.add(Dense(units=12,activation='tanh'))
model.add(Dropout(0.2))
# 输出层,包含 1 个神经元,激活函数为 Sigmoid。这通常用于二分类问题,因为它的输出将被限制在 0 和 1 之间
model.add(Dense(units=1,activation='sigmoid'))optimizer = Adam(learning_rate=1e-4)
# 定义损失函数为二元交叉熵(binary_crossentropy),适用于二分类任务。使用先前定义的优化器,并设置监控指标为准确率
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics='accuracy')

利用早停法,绘制准确率和loss图 

Epoch 1/10
3410/3410 [==============================] - 6s 1ms/step - loss: 0.4577 - accuracy: 0.7886 - val_loss: 0.3800 - val_accuracy: 0.8378
Epoch 2/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3945 - accuracy: 0.8334 - val_loss: 0.3763 - val_accuracy: 0.8395
Epoch 3/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3887 - accuracy: 0.8353 - val_loss: 0.3737 - val_accuracy: 0.8408
Epoch 4/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3844 - accuracy: 0.8378 - val_loss: 0.3717 - val_accuracy: 0.8405
Epoch 5/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3814 - accuracy: 0.8391 - val_loss: 0.3705 - val_accuracy: 0.8422
Epoch 6/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3790 - accuracy: 0.8407 - val_loss: 0.3686 - val_accuracy: 0.8425
Epoch 7/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3772 - accuracy: 0.8409 - val_loss: 0.3679 - val_accuracy: 0.8426
Epoch 8/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3749 - accuracy: 0.8416 - val_loss: 0.3669 - val_accuracy: 0.8427
Epoch 9/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3737 - accuracy: 0.8419 - val_loss: 0.3659 - val_accuracy: 0.8434
Epoch 10/10
3410/3410 [==============================] - 4s 1ms/step - loss: 0.3728 - accuracy: 0.8416 - val_loss: 0.3646 - val_accuracy: 0.8431

 

 总结:

1. 多层结构

  • 网络采用了多个 Dense(全连接)层,包括 24、18、23 和 12 个神经元,这种多层结构让网络具有了足够的 表达能力,可以学习到复杂的特征和数据模式。
  • 每一层的神经元数量递减的结构,也有助于减少模型的复杂度,从而控制模型的 训练效率

2. 激活函数:tanh

  • 网络中的每个隐藏层都使用了 tanh(双曲正切) 激活函数,它是一个常见的非线性激活函数。它的输出范围在 -1 到 1 之间,这有助于模型捕捉更复杂的非线性关系。
  • 使用 tanh 激活函数的优点是能够 避免过度激活,并且由于其零中心化的特性,它有助于加速梯度下降过程。

3. Dropout 层

  • Dropout 是一种常用的正则化技术,用于防止 过拟合。通过随机丢弃一定比例的神经元,网络不会过度依赖某一特定的神经元,从而提高模型的 泛化能力
  • 网络在两个不同位置使用了 Dropout 层:一个在隐藏层后(丢弃比例 50%),另一个在最后的隐藏层之后(丢弃比例 20%)。这种配置进一步增强了网络的鲁棒性,减少了训练时的过拟合现象。

4. 输出层与激活函数:Sigmoid

  • 输出层使用 Sigmoid 激活函数,这对于 二分类任务(如判断某个输入属于两个类别中的一个)是标准选择。Sigmoid 的输出范围在 0 到 1 之间,适合输出概率值,用于二分类任务。
  • 由于 Sigmoid 的输出是概率,因此它非常适合用在 二元交叉熵损失函数binary_crossentropy)配合下进行训练。

5. 优化器:Adam

  • 使用了 Adam 优化器,它结合了 Momentum 和 RMSProp 的优势,具有自适应的学习率调整机制。
  • 由于 Adam 可以自动调整每个参数的学习率,它通常比传统的 梯度下降法 收敛得更快,尤其在训练复杂模型时表现尤为突出。
  • 此外,Adam 对初始学习率不那么敏感,默认设置的学习率(1e-4)通常对大多数任务都能达到较好的性能。

6. 损失函数:Binary Cross-Entropy

  • 使用了 二元交叉熵(binary_crossentropy) 损失函数,这正是为 二分类任务设计的标准损失函数。
  • 该损失函数可以量化模型输出与实际标签之间的差异,随着模型训练的进行,损失值不断减少,从而推动模型性能的提升。

7. 使用了 Keras 高层 API

  • 代码使用了 Keras 高层 API(Sequential 和 Dense 等),简洁且易于理解。Keras 提供了高效的神经网络构建和训练接口,使得模型的搭建更加直观和快速。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/8950.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Elasticsearch如果集群出现节点故障,我应该如何快速定位问题?

当 Elasticsearch (ES) 集群发生故障时,快速定位问题源头非常重要。Elasticsearch 是一个分布式系统,故障可能由多种原因引起,涉及到硬件、配置、网络、集群本身的健康状况等多个层面。以下是一些定位问题的步骤和工具: 检查集群…

科研绘图系列:R语言热图和点图(heatmap dotplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包准备画图主题数据链接导入数据热图1热图2其他图1其他图2系统信息介绍 热图(Heatmap)是一种数据可视化技术,用于通过颜色的变化来展示数据矩阵中的数值大小。它通常由行和…

【Leecode】Leecode刷题之路第44天之通配符匹配

题目出处 44-通配符匹配-题目出处 题目描述 个人解法 思路: todo代码示例:(Java) todo复杂度分析 todo官方解法 44-通配符匹配-官方解法 前言 本题与10. 正则表达式匹配非常类似,但相比较而言,本题稍…

智象未来(HiDream.ai):从科技创新启程,绘制智能未来新篇章

在人工智能领域飞速演进的当下,智象未来(HiDream.ai)作为全球领先的多模态生成式人工智能技术供应商,正以其独树一帜的视觉多模态大模型及创新应用,推动行业趋势的前进。智象未来(HiDream.ai)自…

用 Python搭建一个微型的HTTP服务器用于传输 2024/11/9

使用内置的 http.server 模块,来搭建微型服务器。 快速启动服务器http.server --- HTTP 服务器Python 3.13.0 文档 声明:文章代码部分 由 ai 生成 创建一个简单的文件共享服务器 进入 需要共享的目录 再打开cmd 输入以下代码 python -m http.server 8000 打开服务器 设置主…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 数据库(MySql、MongoDB)

介绍 [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用 github地址:https://github.com/dotnetcore/CAP官网地址: https://cap.dotnetcore.xyz/官网文档:https://cap.dotnetcore.xyz/userguide/zh/cap/id…

【Syncfusion系列】Diagram 杂谈第一篇

前言 我认为 Diagram 是 Syncfusion 中首屈一指的优秀控件!最近在写一个工作流引擎,前端界面就用的是Diagram ,接下来就来看一看。 Diagram的事件 查看 SfDiagram的属性,如果想实现什么事件,就看这些Command结尾的…

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑

【服务器】使用命令行文本编辑器(如 vim、nano 或 vi)创建文件并编辑 准备:连接至服务器(如ssh)创建 .ncl 文件方法 1: 使用 vim 创建 .ncl 文件方法 2: 使用 nano 创建 .ncl 文件确认文件已创建运行 .ncl 文件 总结参…

[DB] Project-1-MySQL

下载并安装了MySQL-8.0.40 root; 密码为6位 MySQL安装教程(详细版)_mysql安装教程8.0.36-CSDN博客 解决:管理员身份运行cmd出现mysql : 无法将“mysql”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,…

【JavaEE进阶】导读

本节⽬标 了解什么是JavaEE 在JavaEE中, 我们学习什么, 如何学, 难点是什么 一、Java EE 发展历程 Java EE(Java Platform Enterprise Edition), Java 平台企业版. 是JavaSE的扩展, ⽤于解决企业级的开发需求, 所以也可以称之为是⼀组⽤于企业开发的Java技术标准. 所以, 学习…

.NET 黑名单上传 突破WAF防护的SoapShell (免杀版)

01阅读须知 此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失&#xf…

多线程和线程同步复习

多线程和线程同步复习 进程线程区别创建线程线程退出线程回收全局写法传参写法 线程分离线程同步同步方式 互斥锁互斥锁进行线程同步 死锁读写锁api细说读写锁进行线程同步 条件变量生产者消费者案例问题解答加强版生产者消费者 总结信号量信号量实现生产者消费者同步-->一个…

MySQL_第13章_视图

1. 常见的数据库对象 2. 视图概述 2.1 为什么使用视图? 视图一方面可以使用表的一部分而不是所有的表,另一方面也可以针对不同的用户制定不同的查询视图。 2.2 视图的理解 视图是一种虚拟表,本身是不具有数据的,占用很少的内存…

Python数据分析-Netflix数据分析和可视化

一、研究背景 在当今时代,流媒体技术迅猛发展,如风暴般席卷全球娱乐产业,重塑了大众的娱乐消费模式。Netflix 在这一潮流中一马当先,成为全球首屈一指的在线流媒体平台。自 2007 年开启流媒体服务后,Netflix 就马不停…

数据集市是什么?有什么优势?

一、数据集市是什么? 1、数据集市的产生背景: 因为数据仓库的工作范围和成本比较巨大,技术部门必须对所有的以全企业的眼光对待任何一次决策分析,这样就变成了成本高、耗时高的大项目,而且这种集中式的数据处理方式往往…

Cross Modal Transformer: Towards Fast and Robust 3D Object Detection

代码地址 https://github.com/junjie18/CMT 1. 引言 在本文中,我们提出了Cross-Modal Transformer(CMT),这是一种简单而有效的端到端管道,用于鲁棒的3D对象检测(见图1(c)&#xf…

Oracle数据库 查看SQL执行计划的几种方法

前言 在日常的运维工作中,SQL优化是DBA的进阶技能,SQL优化的前提是要看SQL的执行计划是否正确,下面分享几种查看执行计划的方法,每一种方法都各有各的好处,可以根据特定场景选择某种方法。 一.使用AUTOTRACE查看执行…

简单介绍Nginx服务器的反向代理、负载均衡

欢迎来到“雪碧聊技术”CSDN博客! 在这里,您将踏入一个专注于Java开发技术的知识殿堂。无论您是Java编程的初学者,还是具有一定经验的开发者,相信我的博客都能为您提供宝贵的学习资源和实用技巧。作为您的技术向导,我将…

域名+服务器+Nginx+宝塔使用SSL证书配置HTTPS

前言 在我的前面文章里,有写过一篇文章 linux服务器宝塔从头部署别人可访问的网站 在这篇文章,有教学怎么使用宝塔和买的服务器的公网IP,以及教怎么打包vue和springboot去部署不用域名的网站让别人访问 那么,这篇文章将在这个…

Chromium 中chrome.webRequest扩展接口定义c++

一、chrome.webRequest 注意 :从 Manifest V3 开始,"webRequestBlocking" 权限不再适用于大多数扩展程序。以 "declarativeNetRequest" 为例,它允许使用 declarativeNetRequest API。除了 "webRequestBlocking&quo…