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
6 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
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
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]
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)
Antworten (2)
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.

0 Kommentare
Siehe auch
Kategorien
Mehr zu Build Deep Neural Networks finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!