🍨 本文为🔗365天深度学习训练营 中的学习记录博客
🍦 参考文章:第R2周:LSTM-火灾温度预测(训练营内部可读)
🍖 作者:K同学啊
任务说明:数据集中提供了火灾温度(Tem1)、一氧化碳浓度(CO 1)、烟雾浓度(Soot 1)随着时间变化数据,我们需要根据这些数据对未来某一时刻的火灾温度做出预测(本次任务仅供学习)
🍺要求:
1、了解LSTM是什么,并使用其构建一个完整的程序。
2、R2达到0.83
🍻拔高:
使用第1~8个时刻的数据 预测第9~10个时刻的温度数据。
🍺我的环境:
- 语言环境:Python3.7
- 编译器:Spyder
- 深度学习框架:TensorFlow2.4.1
- 数据地址:🔗百度网盘
传统的循环神经网络(RNN)在网络中引入循环来处理时间序列的问题,但在处理长序列的数据依赖的关系时候,存在“梯度消失”和“梯度爆炸”等问题。为了解决这些问题,引入了长短期记忆神经网络(LSTM)。
由上图可以看出LSTM包括Input Gate(输入门)、Forget Gate(遗忘门)、Output Gate(输出门)。
- 遗忘门(forget gate):帮助我们决定哪些信息需要从细胞状态中丢弃。遗忘门通过接收上一时刻的隐藏状态 和当前时刻的观测值 ,生成一个范围在 0 到 1 之间的值,表示前一时刻的信息在当前时刻需要被遗忘的程度。
- 输入门(input gate):帮助我们决定哪些信息需要更新细胞状态。输入门通过接收上一时刻的隐藏状态和当前时刻的观测值,生成一个范围在0 到 1 之间的值,表示当前时刻需要更新的信息。
- 输出门(output gate):帮助我们决定哪些信息需要输出。输出门通过接收上一时刻的隐藏状态和当前时刻的观测值,生成一个范围在 0到 1 之间的值,表示当前时刻需要输出的信息。
一、前期准备工作
1、导入数据
import tensorflow as tf
import pandas as pd
import numpy as np
gups=tf.config.list_physical_devices("GPU")
if gpus:
tf.config.experimental.set_memory_growth(gups[0],True)
tf.config.set_visible_devices([gpus[0]],"GPU")
print(gpus)
# 导入数据
df_1=pd.read_csv("D:/桌面/深度学习数据/woodpine2.csv")
print(df_1)
2、数据可视化
import matplotlib.pyplot as plt
import seaborn as sns
plt.rcParams['savefig.dpi']=500
plt.rcParams['figure.dpi']=500
fig,ax=plt.subplots(1,3,constrained_layout=True,figsize=(14,3))
sns.lineplot