Error using trainNetwork (line 191) TRANSPOSE does not support N-D arrays. Use PAGETRANSPOSE/PAGECTRANSPOSE to transpose pages or PERMUTE to reorder dimensions of N-D arrays
5 views (last 30 days)
Show older comments
I'm trying to train a NN using 2000 sets of 3 x 128 data but getting error:
Error using trainNetwork (line 191)
TRANSPOSE does not support N-D arrays. Use PAGETRANSPOSE/PAGECTRANSPOSE to transpose pages or PERMUTE to reorder dimensions of N-D arrays.
Caused by:
Error using '
TRANSPOSE does not support N-D arrays. Use PAGETRANSPOSE/PAGECTRANSPOSE to transpose pages or PERMUTE to reorder dimensions of N-D arrays.
%here's my training data:
XTrain_arr=zeros(3,128,2000);
TTrain_arr=zeros(3,128,2000);
for i=1:2000
XTrain_arr(:,:,i)=XTrain{i};
TTrain_arr(:,:,i)=TTrain{i};
end
XTrain_arr=permute(XTrain_arr,[1,2,4,3]);
TTrain_arr=permute(TTrain_arr,[1,2,4,3]);
%defination of the network:
layers2 = [
imageInputLayer([128, 1, 3], Name="input")
convolution2dLayer([1, 4], 3, Padding="same", Stride=[1, 1])
convolution2dLayer([1, 64], 8, Padding="same", Stride=[1, 8])
layerNormalizationLayer()
scalingLayer(Scale=1, Offset=0)
reluLayer
maxPooling2dLayer([1, 2], Padding="same")
convolution2dLayer([1, 32], 8, Padding="same", Stride=[1, 4])
layerNormalizationLayer()
scalingLayer(Scale=1, Offset=0)
reluLayer
maxPooling2dLayer([1, 2], Padding="same")
transposedConv2dLayer([1, 32], 8, Cropping="same", Stride=[1, 4])
reluLayer
transposedConv2dLayer([1, 64], 8, Cropping="same", Stride=[1, 8])
reluLayer
flattenLayer()
lstmLayer(8)
fullyConnectedLayer(8)
dropoutLayer(0.2)
fullyConnectedLayer(4)
dropoutLayer(0.2)
fullyConnectedLayer(3)
regressionLayer]
options = trainingOptions("adam",...
MaxEpochs=600,...
MiniBatchSize=32,...
InitialLearnRate=0.001,...
VerboseFrequency=100,...
Verbose=1, ...
Shuffle="every-epoch",...
Plots="none", ...
DispatchInBackground=true);
deepNetworkDesigner(layers2)
%Train the network
[net1_norm_2,info1_norm_2] = trainNetwork(XTrain_arr,TTrain_arr,layers2,options);
1 Comment
Matt J
on 9 Jun 2025
%here's my training data:
XTrain_arr=zeros(3,128,2000);
TTrain_arr=zeros(3,128,2000);
XTrain_arr=permute(XTrain_arr,[1,2,4,3]);
TTrain_arr=permute(TTrain_arr,[1,2,4,3]);
%defination of the network:
layers2 = [
imageInputLayer([128, 1, 3], Name="input")
convolution2dLayer([1, 4], 3, Padding="same", Stride=[1, 1])
convolution2dLayer([1, 64], 8, Padding="same", Stride=[1, 8])
layerNormalizationLayer()
scalingLayer(Scale=1, Offset=0)
reluLayer
maxPooling2dLayer([1, 2], Padding="same")
convolution2dLayer([1, 32], 8, Padding="same", Stride=[1, 4])
layerNormalizationLayer()
scalingLayer(Scale=1, Offset=0)
reluLayer
maxPooling2dLayer([1, 2], Padding="same")
transposedConv2dLayer([1, 32], 8, Cropping="same", Stride=[1, 4])
reluLayer
transposedConv2dLayer([1, 64], 8, Cropping="same", Stride=[1, 8])
reluLayer
flattenLayer()
lstmLayer(8)
fullyConnectedLayer(8)
dropoutLayer(0.2)
fullyConnectedLayer(4)
dropoutLayer(0.2)
fullyConnectedLayer(3)
regressionLayer]
options = trainingOptions("adam",...
MaxEpochs=2,...
MiniBatchSize=32,...
InitialLearnRate=0.001,...
Shuffle="every-epoch",...
Plots="none");
%Train the network
[net1_norm_2,info1_norm_2] = trainNetwork(XTrain_arr,TTrain_arr,layers2,options)
Answers (2)
Hitesh
on 11 Jun 2025
Hi Ruoli,
The error indicates that the input data format 'XTrain_arr' or 'TTrain_arr' is incompatible with the expected format for "trainNetwork"."trainNetwork" expects input data 'XTrain_arr' to be formatted as a 4-D array in this format [height, width, channels, number of observations].
% Create dummy data for demonstration
XTrain = cell(1, 2000);
TTrain = cell(1, 2000);
for i = 1:2000
XTrain{i} = rand(3, 128); % 3 channels × 128 time steps
TTrain{i} = rand(1, 3); % Regression target: 1×3 vector
end
XTrain_arr = zeros(128, 1, 3, 2000); % image format for imageInputLayer
TTrain_arr = zeros(2000, 3); % regression targets
for i = 1:2000
X = XTrain{i}'; % Now X is 128×3
XTrain_arr(:,1,:,i) = X; % Format: H × W × C × N
TTrain_arr(i,:) = TTrain{i}; % Format: N × output_dim
end
% Define the network (assuming you fixed the scalingLayer as discussed earlier)
layers2 = [
imageInputLayer([128, 1, 3], Name="input")
convolution2dLayer([1, 4], 3, Padding="same", Stride=[1, 1])
convolution2dLayer([1, 64], 8, Padding="same", Stride=[1, 8])
layerNormalizationLayer()
scalingLayer(Scale=1)
reluLayer
maxPooling2dLayer([1, 2], Padding="same")
convolution2dLayer([1, 32], 8, Padding="same", Stride=[1, 4])
layerNormalizationLayer()
scalingLayer(Scale=1)
reluLayer
maxPooling2dLayer([1, 2], Padding="same")
transposedConv2dLayer([1, 32], 8, Cropping="same", Stride=[1, 4])
reluLayer
transposedConv2dLayer([1, 64], 8, Cropping="same", Stride=[1, 8])
reluLayer
flattenLayer()
lstmLayer(8)
fullyConnectedLayer(8)
dropoutLayer(0.2)
fullyConnectedLayer(4)
dropoutLayer(0.2)
fullyConnectedLayer(3)
regressionLayer
];
% Training options
options = trainingOptions("adam",...
MaxEpochs=600,...
MiniBatchSize=32,...
InitialLearnRate=0.001,...
VerboseFrequency=100,...
Verbose=1, ...
Shuffle="every-epoch",...
Plots="none", ...
DispatchInBackground=true);
% Train the network
[net1_norm_2, info1_norm_2] = trainNetwork(XTrain_arr, TTrain_arr, layers2, options);
However, "trainNetwork" is not recommended. Use the trainnet function instead as mentioned in MATALB documentation.

0 Comments
See Also
Categories
Find more on Build Deep Neural Networks in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!