吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 623|回复: 6
收起左侧

[经验求助] 深度学习ARIMA模型训练和LSTM

[复制链接]
glm_52 发表于 2023-3-13 20:55
30吾爱币
本帖最后由 glm_52 于 2023-3-15 11:13 编辑

如果是多层LSTM,怎么来进行控制张量维度的变化,多层的LSTM只需要把参数num_layers改了就可以了吗?最近在写深度学习ARIMA模型代码  并且用数据进行训练,但是奈何训练完后(.fit函数之后),下边的程序就不运行了,而且尝试输出经过训练完后的东西,什么都没有,是哪里出了问题吗???请大佬们指点。
import pandas as pd
import datetime
import matplotlib.pylab as plt
import seaborn as sns
import numpy as np
from matplotlib.pylab import style
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf


style.use('ggplot')                             #样式美化
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 读取数据             读取的数据路径             索引的列编号    解析0列的值作为单独的日期
data = pd.read_csv( "./dataset/LD2011_2014.csv", index_col=0, parse_dates=[0])
# data.head
# 异常值替换
data = data.replace(0.000000, np.nan)
# 提取一户的数据
data_158_week = data["MT_158"].resample("W").sum()   # W是周   按照每周的数据进行求和
data_158_week_train = data_158_week["2011-01-09":"2014-12-28"]

data_158_week_train.plot()              #plot函数用来画线,画点

# 将序列平稳(差分法确定d)
data_diff = data_158_week_train.diff()    #diff用来求差分
data_diff = data_diff.dropna()

plt.figure()
plt.plot(data_diff)
plt.title("一阶差分")      #做差分为了消除恒定趋势
plt.show()

# 自相关函数ACF求p        lags 表示滞后的阶数
acf = plot_acf(data_diff, lags=20)
plt.title("ACF")
acf.show()

# 偏自相关函数pacf求q
pacf = plot_pacf(data_diff, lags=20)
plt.title("PACF")
pacf.show()

# 训练模型 ARIMA(p,d,q)
model = ARIMA(data_158_week_train, order=(1,1,1),freq='W')
result = model.fit()     #
程序执行到这里之后  就没有返回值了  而且下面的程序也不执行了,不知道是什么原因

# 选择时间段进行预测
pred = result.predict("2014-10-26", "2015-01-15", dynamic=True, typ="levels")      
print(pred)

# 将原本数据与预测数据同时画在图上,展示预测效果
plt.figure(figsize=(6,6))       #为什么显示不出来???????
plt.xticks(rotation=45)
plt.plot(pred)
plt.plot(data_158_week_train)

plt.show()

其中,所用到数据集格式如下:https://imgse.com/i/ppQxa8K就是简单的用电数据,按照每周进行求和

最佳答案

查看完整内容

对于多层LSTM,只需要改变num_layers参数即可改变模型层数,但是需要注意张量维度的变化。 关于代码的问题,可能是模型训练过程中出现了错误导致程序中断。可以尝试添加try...except语句来捕获错误并输出错误信息。另外,也可以尝试在模型训练过程中加入更多的输出语句,以便更好地了解训练进展情况。 如果你只是想增加LSTM的层数,只需要调整num_layers参数即可,但是需要注意的是,每增加一层LSTM,输入的张量的维度也会相应 ...

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

jamstory 发表于 2023-3-13 20:55
对于多层LSTM,只需要改变num_layers参数即可改变模型层数,但是需要注意张量维度的变化。

关于代码的问题,可能是模型训练过程中出现了错误导致程序中断。可以尝试添加try...except语句来捕获错误并输出错误信息。另外,也可以尝试在模型训练过程中加入更多的输出语句,以便更好地了解训练进展情况。
如果你只是想增加LSTM的层数,只需要调整num_layers参数即可,但是需要注意的是,每增加一层LSTM,输入的张量的维度也会相应地增加一个维度,因此需要注意维度的变化。

例如,如果输入张量的形状是(batch_size, seq_len, input_size),那么增加一层LSTM之后,输出的张量的形状就变成了(batch_size, seq_len, hidden_size),其中hidden_size是LSTM的隐藏状态维度。

关于ARIMA的问题:

根据你提供的代码和数据,我发现在调用plot()函数时,你使用了错误的方法。应该是plt.plot()而不是acf.show()和pacf.show()。因此,这些图形没有正确显示。

此外,你发现程序在执行result = model.fit()之后似乎没有任何反应,这是因为模型的拟合需要一些时间,具体取决于你的数据量和模型参数。你可以加入一些输出语句来跟踪程序的执行进度,例如在result = model.fit()之前输出一条消息,以便知道程序在哪里运行。

另外,你可以尝试调整模型的参数,例如order和freq,看看是否能改善模型的性能。此外,还可以尝试使用其他时间序列模型,例如LSTM或GRU,以获得更好的预测效果。
xp9477 发表于 2023-3-15 21:59
关于多层LSTM模型的问题,只需改变参数num_layers来控制LSTM的层数,但是需要注意每一层的输入和输出张量的维度要与相邻的层保持一致,否则会报维度不匹配的错误。

关于你的深度学习ARIMA模型的问题,程序执行到.fit()函数后就没有返回值了,这是因为模型训练需要一定时间,你需要等待模型训练完成后才能进行后续的操作。你可以尝试在.fit()函数后面加上print(result.summary())来查看模型训练的结果,或者使用result.summary2()来查看更详细的模型训练结果。另外,如果训练过程中出现了错误,可以查看错误信息来定位问题所在。
 楼主| glm_52 发表于 2023-3-16 08:55
xp9477 发表于 2023-3-15 21:59
关于多层LSTM模型的问题,只需改变参数num_layers来控制LSTM的层数,但是需要注意每一层的输入和输出张量的 ...

ARIMA模型在运行到fit()后,等他运行完,后面的代码都不会运行,即使在后边加上print,也不会输出,fit完之后程序就直接停止了,后边写什么代码都没反应了,不知道是为什么
chenlinpsp 发表于 2023-3-16 09:01
帮顶一下
 楼主| glm_52 发表于 2023-3-16 20:52

谢谢,太感谢了
 楼主| glm_52 发表于 2023-3-17 13:02
jamstory 发表于 2023-3-17 11:27
对于多层LSTM,只需要改变num_layers参数即可改变模型层数,但是需要注意张量维度的变化。

关于代码的问 ...

fti完我等了很久,程序都运行完了 ,还是没有反应,这一句运行完,没有输出结果,程序直接运行完了,这是什么问题
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-21 17:50

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表