好友
阅读权限 10
听众
最后登录 1970-1-1
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,输入的张量的维度也会相应 ...
发帖前要善用【论坛搜索 】 功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。