Error using trainNetwork (line 191) TRANSPOSE does not support N-D arrays. Use PAGETRANSP​OSE/PAGECT​RANSPOSE to transpose pages or PERMUTE to reorder dimensions of N-D arrays

5 views (last 30 days)
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
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]
layers2 =
24×1 Layer array with layers: 1 'input' Image Input 128×1×3 images with 'zerocenter' normalization 2 '' 2-D Convolution 3 1×4 convolutions with stride [1 1] and padding 'same' 3 '' 2-D Convolution 8 1×64 convolutions with stride [1 8] and padding 'same' 4 '' Layer Normalization Layer normalization 5 'scaling' Scaling Scaling 6 '' ReLU ReLU 7 '' 2-D Max Pooling 1×2 max pooling with stride [1 1] and padding 'same' 8 '' 2-D Convolution 8 1×32 convolutions with stride [1 4] and padding 'same' 9 '' Layer Normalization Layer normalization 10 'scaling' Scaling Scaling 11 '' ReLU ReLU 12 '' 2-D Max Pooling 1×2 max pooling with stride [1 1] and padding 'same' 13 '' 2-D Transposed Convolution 8 1×32 transposed convolutions with stride [1 4] and cropping 'same' 14 '' ReLU ReLU 15 '' 2-D Transposed Convolution 8 1×64 transposed convolutions with stride [1 8] and cropping 'same' 16 '' ReLU ReLU 17 '' Flatten Flatten 18 '' LSTM LSTM with 8 hidden units 19 '' Fully Connected 8 fully connected layer 20 '' Dropout 20% dropout 21 '' Fully Connected 4 fully connected layer 22 '' Dropout 20% dropout 23 '' Fully Connected 3 fully connected layer 24 '' Regression Output mean-squared-error
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)
Warning: Network issues detected.

Caused by:
Layer 10: Renamed. Layer was renamed 'scaling_2' because multiple layers had the name 'scaling'.
Layer 5: Renamed. Layer was renamed 'scaling_1' because multiple layers had the name 'scaling'.
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.

Sign in to comment.

Answers (2)

Hitesh
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.

Ruoli
Ruoli on 11 Jun 2025
Hi Hitesh,
Thank you for your comment! I have a follow-up question regarding my training data. My input and output consist of 2000 samples of 3-channel 128 length signals. I'm structuring the training data like this:
XTrain_arr = zeros(128, 1, 3, 2000);
TTrain_arr = zeros(3, 128, 2000);
for i = 1:2000
X = XTrain{i}';
XTrain_arr(:,1,:,i) = X;
TTrain_arr(:,:,i) = TTrain{i};
end
Then, I defined the network as you suggested and ran the trainNetwork command:
[net1_norm_2, info1_norm_2] = trainNetwork(XTrain_arr, TTrain_arr, layers2, options);
However, I still encountered the 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.
Could you please advise on how to resolve this error? Is there a specific way to format the data or adjust the network layers to avoid this issue?
Thank you!
  1 Comment
Hitesh
Hitesh on 12 Jun 2025
Hi Ruoli,
Kindly update "TTrain_arr as below due to regression targets format and let me know if you still face this issue.
TTrain_arr = zeros(2000, 3);

Sign in to comment.

Products


Release

R2025a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!