trainnetwork中出现如下报错:错误使用 trainNetwork (第 191 行)
训练序列具有特征维度 12,但输入层需要特征维度为 1 的序列。
出错 learn_1 (第 52 行)
lstm_model = trainNetwork(X_train_lstm, Y_train, layers, options);
请问这如何解决呢?
源代码:
clc;
clear;
close all;
% 1. 生成示例数据
rng(0);
data = randn(216,1);
% 2. 划分训练集和测试集
train_ratio = 0.7;
train_size = round(length(data)*train_ratio);
train_data = data(1:train_size);
test_data = data(train_size+1:end);
% 3. 创建滞后特征(12个滞后值预测下一步)
createFeatures = @(x) [x(1:end-12), x(2:end-11), x(3:end-10), x(4:end-9),...
x(5:end-8), x(6:end-7), x(7:end-6), x(8:end-5),...
x(9:end-4), x(10:end-3), x(11:end-2), x(12:end-1)];
% 创建特征和目标
X_train = createFeatures(train_data);
Y_train = train_data(13:end);
X_test = createFeatures(test_data);
Y_test = test_data(13:end);
% 4. 训练随机森林模型
numTrees = 100;
rf_model = TreeBagger(numTrees, X_train, Y_train, 'Method', 'regression');
% 5. 训练LSTM模型
% 转换数据格式
X_train_lstm = cell(size(X_train,1),1);
for i = 1:size(X_train,1)
X_train_lstm{i} = X_train(i,:)';
end
% 定义LSTM网络
inputSize = 1;
numHiddenUnits = 50;
layers = [ ...
sequenceInputLayer(inputSize)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(1)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs', 150, ...
'GradientThreshold', 1, ...
'InitialLearnRate', 0.01, ...
'Verbose', 0);
lstm_model = trainNetwork(X_train_lstm, Y_train, layers, options);