lstm pytorch实例实现,pytorch lstmcell
本文主要介绍PyTorch构建LSTM实现时间序列负荷预测。有需要的朋友可以参考一下,希望能有所帮助。祝大家进步很大,早日升职加薪。
00-1010i。前言二。数据处理。LSTM模式四。培训与测试。源代码和数据
目录
在上一篇文章《深入了解PyTorch中LSTM的输入输出(从输入输入到线性输出)》中,我详细讲解了如何使用PyTorch构建LSTM模型。本文的主要目的是建立时间序列预测的LSTM模型。
系列文章:
PyTorch构建LSTM实现多变量多步长时序负荷预测
PyTorch建成LSTM实现多变量时序负荷预测
PyTorch深度学习LSTM从输入到线性输出
PyTorch构建双向LSTM实现时序负荷预测
I. 前言
数据集是某个地区某段时间的电力负荷数据。除了负载,还包括温度、湿度等信息。
本文暂时不考虑其他变量,只考虑历史负荷来预测未来负荷。
本文根据前24个时刻的荷载,计算下一个时刻的荷载。多元预测可参考:PyTorch构建LSTM实现多元时间序列预测(负荷预测)。
定义加载数据(文件名):
全局最大值、最小值
df=PD . read _ CSV( data/new _ data/ file _ name,encoding=gbk )
columns=df.columns
df.fillna(df.mean(),inplace=True)
MAX=np.max(df[columns[1]])
MIN=NP . MIN(df[列[1]])
df[columns[1]]=(df[columns[1]]-MIN)/(MAX-MIN)
返回df
类MyDataset(数据集):
def __init__(self,data):
self.data=数据
def __getitem__(self,item):
返回自身数据[项目]
def __len__(self):
返回len(自身数据)
def nn_seq(文件名,B):
打印(“处理数据:”)
数据=加载数据(文件名)
load=data[data.columns[1]]
load=load.tolist()
负载=火炬。浮动传感器(负载)。视图(-1)
data=data.values.tolist()
序列=[]
对于范围内的I(len(data)-24):
train_seq=[]
train_label=[]
对于范围(I,I ^ 24):内的j
train_seq.append(加载[j])
train_label.append(load[i 24])
train_seq=火炬。浮动处理器(train_seq)。视图(-1)
train_label=火炬。FloatTensor(train_label)。视图(-1)
序列追加((train_seq,train_label))
#打印(序列号[:5])
DTR=seq[0: int(len(seq)* 0.7)]
DTE=seq[int(len(seq)* 0.7): len(seq)]
train_len=int(len(Dtr)/B) * B
test_len=int(len(Dte)/B) * B
Dtr,Dte=Dtr[:测试长度],Dte[:测试长度]
train=MyDataset(Dtr)
测试=我的数据集(Dte)
Dtr=DataLoader(dataset=train,b
atch_size=B, shuffle=False, num_workers=0)
Dte = DataLoader(dataset=test, batch_size=B, shuffle=False, num_workers=0)
return Dtr, Dte
上面代码用了DataLoader来对原始数据进行处理,最终得到了batch_size=B的数据集Dtr和Dte,Dtr为训练集,Dte为测试集。
III. LSTM模型
这里采用了深入理解PyTorch中LSTM的输入和输出(从input输入到Linear输出)中的模型:
class LSTM(nn.Module):
IV. 训练
def LSTM_train(name, b):
一共训练了15轮:
V. 测试
def test(name, b):
MAPE为6.07%:
VI. 源码及数据
源码及数据我放在了GitHub上,LSTM-Load-Forecasting
以上就是PyTorch搭建LSTM实现时间序列负荷预测的详细内容,更多关于PyTorch搭建LSTM时间序列负荷预测的资料请关注盛行IT软件开发工作室其它相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。