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 (최근 30일)
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
Matt J
Matt J 2025년 6월 9일
%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.

댓글을 달려면 로그인하십시오.

답변 (2개)

Hitesh
Hitesh 2025년 6월 11일
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 2025년 6월 11일
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
Hitesh
Hitesh 2025년 6월 12일
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);

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Build Deep Neural Networks에 대해 자세히 알아보기

제품


릴리스

R2025a

Community Treasure Hunt

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

Start Hunting!

Translated by