sequenceInputLayer () Размеры конкатенируемых массивов не согласованы - PullRequest
1 голос
/ 02 июля 2019

Я пытаюсь создать модель LSTM. Я получаю следующую ошибку:

Ошибка при использовании vertcat. Размеры объединяемых массивов не являются последовательны. Ошибка в источнике (строка 9) sequenceInputLayer (33)

Каким должен быть ввод sequenceInputLayer и его размер?

Data = csvread('newData.csv');
num_timesteps = size(Data,1)
num_features = size(Data,2)
Data = normalize(Data);
numHiddenUnits = 200;
size(Data)
layers = [
    sequenceInputLayer(33)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    fullyConnectedLayer(50)
    dropoutLayer(0.5)
    fullyConnectedLayer(num_features),regressionLayer];
maxEpochs = 60;
miniBatchSize = 20;
options = trainingOptions('adam', ...
    'MaxEpochs',maxEpochs, ...
    'MiniBatchSize',miniBatchSize, ...
    'InitialLearnRate',0.001, ...
    'GradientThreshold',1, ...
    'Shuffle','never', ...
    'Plots','training-progress',...
    'Verbose',0);
% net = trainNetwork(Data,Data,layers,options);

1 Ответ

1 голос
/ 02 июля 2019

Проблема не в sequenceInputLayer, проблема в том, как вы создаете массив layers.

Замените:

layers = [
    sequenceInputLayer(33)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    fullyConnectedLayer(50)
    dropoutLayer(0.5)
    fullyConnectedLayer(num_features),regressionLayer];

На:

layers = [
    sequenceInputLayer(33)
    lstmLayer(numHiddenUnits,'OutputMode','sequence')
    fullyConnectedLayer(50)
    dropoutLayer(0.5)
    fullyConnectedLayer(num_features),
    regressionLayer];

Объяснение: В объявлении массива при добавлении элементов в новые строки (или разделении на ;) вы создаете вектор столбцов, а при разделении на , вы создаетевектор строкиКак-то ты их перепутал.

...