Я новичок в Matlab для проблемы нейронной сети. Позвольте мне описать то, с чем я сталкиваюсь, когда я использую matlab для нейронной сети.
Я моделирую набор данных для нейронной сети. Я обозначаю Y как переменную ответа, а X1, X2 и X3 являются предикторами. Предположим, есть 1000 наблюдений. Следовательно, я получаю вектор Y с размером 1000 X 1
, X=[X1,X2,X3]
, который имеет размерность 1000 X 3
такой, что каждый X1
, X2
и X3
имеет размерность 1000 X 1
. Они Согласно официальной документации, https://www.mathworks.com/help/deeplearning/ref/trainnetwork.html#mw_0847a076 -b088-4378-b870-5c00a7f92e18
Я использую net = trainNetwork(sequences,Y,layers,options)
для обучения сети LSTM. Сначала я передаю данные следующим образом:
time_step=201; % Set the time_step to be 201
time_step_lower=200; time_step_upper=400;
num_sequence=5;
sequence_X=cell(num_sequence,1); sequence_Y=cell(num_sequence,1);
for i=1:num_sequence
if i~=num_sequence
sequence_X_append=X((i-1)*time_step+1:i*time_step,:)';
sequence_Y_append=Y((i-1)*time_step+1:i*time_step,:)';
else
sequence_X_append=X((i-1)*time_step+1:end,:)';
sequence_Y_append=Y((i-1)*time_step+1:end,:)';
sequence_length=length(sequence_X_append);
if sequence_length<time_step_lower || sequence_length>time_step_upper
sequence_X_append=X(end-time_step+1:end,:)';
sequence_Y_append=Y(end-time_step+1:end,:)';
end
end
sequence_X{i}=sequence_X_append;
sequence_Y{i}=sequence_Y_append;
end
Я также вставляю следующие слои для нейронной сети:
% Definition of layers
% number of predictor variables
numFeatures=3;
% Assuming the number of hidden units
numHiddenUnits=64;
numResponses = 10;
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numResponses)
regressionLayer];
maxEpochs=100;
options = trainingOptions('adam', ...
'ExecutionEnvironment','cpu', ...
'MaxEpochs',maxEpochs, ...
'GradientThreshold',1, ...
'Verbose',false, ...
'Plots','training-progress');
Наконец, я использую net = trainNetwork(sequence_X,sequence_Y,layers,options);
для обучения, но вывод сообщений об ошибках:
Ошибка при использовании trainNetwork (строка 170) Неверные данные обучения. Ответы должны быть матрицей чисел c ответов или массивом последовательностей ячеек N-1, где N - количество последовательностей. Измерение характеристик всех последовательностей должно быть одинаковым.
Я предполагаю, что в моем коде что-то не так, и я хотел бы обратиться за помощью здесь. Спасибо.