LSTM做预测遇到的错误总结

一个是shape()、reshape()函数的问题,经常会有:
ValueError:cannot reshape array of size 220110 into <870,7,36>

这其实是对这两个函数的理解问题,文档里说的比较不好理解,通俗一点就是shape(a,b,c)、reshape(a,b,c)
其实就是reshape(样本多少个,每个样本中有几组变量的个数,每个变量中又有几个多少分支)
reshape(870只股票,7年,每年36个变量)

shape函数同上

这样只要调节870736和size 数值相等即可

ValueError: Input 0 is incompatible with layer lstm_3 :expected ndim=3 , found ndim=2
这个问题是对LSTM的原理不够理解,LSTM处理的是三维数据变量,你要是输入一个矩阵那是不对的。换句话说,要求的是面板数据,输入的却是截面数据。那有一个维度上没有数据,那一定处理不了。
因此输入的结构从(7,36)改为(870,7,36)即可

ValueError: Error when checking target : expected dense_1 to have 3 dimensions , but got array with shape <75,1>
这个问题说的其实还是三维的输入需求,只输入了二维,要把二维数据转换为三维的。转换代码我会附在后边

ValueError: Error when checking target : expected dense_1 to have shape <1, > , but got array with shape <7, >
这个问题,其实是一个dense层只能处理一个向量,或者说一个年份的数据。但现在输入了7个,因为是7年的预测结果,因此,把dense层的神经元数量由1个改为7个就能够装得下7个输入了

因为excel导入的数据都是pandas的二维,所以要将其先转换为numpy然后再转为3为pandas的pannels数据
下面是二维转三维的输入代码:

输入excel数据时的转换:
inputfile = ‘D:\input.xls’
data = pd.read_excel(inputfile) #读取数据
data_train0 = data.copy() #复制一下数据建模
data_train1=data_train0.values
data_train=data_train1.reshape(870,7,36)
x_train = data_train #特征数据

导出excel数据时的转换
三维转二维,转为dataframe
datap0是上边data_train经过运算后的三维数据,数据结构和data_train一致,即(870,7,36)
datap1=datap0.reshape(870,7)
datap2=np.array(datap1)
datap=pd.DataFrame(datap2)
datap.to_excel(‘D:\prey.xls’)

转自 http://blog.sina.com.cn/s/blog_ecfc5ce90102xp1r.html

在MATLAB R2016版中,你可以使用其内置的深度学习工具箱(Deep Learning Toolbox)来构建LSTM(长短期记忆)神经网络。以下是基本步骤: 1. **安装及初始化**: - 首先,确保你已经安装了Deep Learning Toolbox,如果没有,需要通过Matlab安装向导进行安装。 - 使用命令`clear all; close all; clc`清除工作空间,创建新的工作环境。 2. **数据预处理**: - 准备训练数据,将其分为输入(X)和目标(Y)。对于序列数据,可能需要将每一行视为一个样本,每列是一个时间步。 3. **创建模型**: ```matlab net = lstmNetwork(numInputs, numHiddenUnits); % numInputs是你的时间步数,numHiddenUnits是LSTM单元的数量 ``` 4. **配置模型**: - 可能需要调整训练选项,比如设定迭代次数、学习率等。例如: ```matlab net.layers(1).transferFcn = 'log-sigmoid'; % 设置激活函数 options = trainingOptions('adam', ... % 使用Adam优化器 'MaxEpochs', epochs, 'MiniBatchSize', miniBatchSize); ``` 5. **训练模型**: ```matlab [net, trnloss] = train(net, XTrain, YTrain, options); % XTrain和YTrain是你的训练数据 ``` 6. **评估与预测**: - 训练完成后,可以使用`evaluate`函数验证性能,用`predict`对新数据进行预测。 7. **保存与加载模型**: ```matlab save('myModel.mat', 'net'); % 存储模型 loadedNet = load('myModel.mat'); % 加载模型 ``` 记住,每个步骤的具体细节可能会根据你的数据和任务需求有所不同。如果你遇到具体的函数或选项错误,记得查阅MATLAB官方文档或搜索在线资源。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值