LSTM Input Size Problem

Illustration
ritasingh - 2021-05-04T15:36:58+00:00
Question: LSTM Input Size Problem

Hello, I am attempting to train a LSTM network, but I'm struggling to resize the input data to the requirements of the LSTM. · LSTM Requirements: Nx1 - where N is the number of observations · My current data: XTrain, a 4D array (BxHxCxR) where: (Number of bands)-by-(Number of hops)-by-(Number of channels)-by-(Number of Responses) I want to create a column vector (Nx1), where each element of the vector has a 3D array (BxHxC) inside. My current code for resizing the data is the following:   numResponses = size(xTrain,4); % Number of training samples for i = 1:numResponses xTrainReshaped(:,i) = xTrain(:,:,:,i); % EACH AUDIO has size of 128x42x2channels end yTrain = categorical(yTrain); % CATEGORICAL, N x 1 size ERROR: Unable to perform assignment because the size of the left side is 1-by-1 and the size of the right side is 128-by-42-by-2. What am I missing here? Some help would be certainly appreciated.

Expert Answer

Profile picture of John Michell John Michell answered . 2025-11-20

 
I was able to solve the issue. For anyone wondering, here's the code I created:
 
%% RESHAPE INPUT DATA

% TRAIN DATA - MUST BE CHANGED TO: Nx1 - Where n is nTrainSamples
for i = 1:nTrainSamples
    sampleTrain=xTrain(:,:,:,i);
    xTrainReshaped{i} = sampleTrain;
end

xTrainReshaped = reshape(xTrainReshaped,[nTrainSamples 1]); % Create a column vector
yTrain = categorical(yTrain);

% CONVERT TEST DATA INTO Nx1
nTestSamples = size(xTest,4);
for i = 1:nTestSamples
    sampleTest=xTest(:,:,:,i);
    xTestReshaped{i} = sampleTest;
end
xTestReshaped = reshape(xTestReshaped,[nTestSamples 1]); % Create a column vector
yTest = categorical(yTest);


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!