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

6 Ansichten (letzte 30 Tage)
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 Kommentar
Matt J
Matt J am 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.

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Hitesh
Hitesh am 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 am 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 Kommentar
Hitesh
Hitesh am 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);

Melden Sie sich an, um zu kommentieren.

Produkte


Version

R2025a

Community Treasure Hunt

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

Start Hunting!

Translated by