How to train complex [64 1] matrices in deeplearning nw

Illustration
Lucas - 2021-04-07T12:51:49+00:00
Question: How to train complex [64 1] matrices in deeplearning nw

I am trying to train a complex numbered  matrix with a fullyconnected layer, but I can't read the value of the imaginary axis from the input layer. Is there a way?   1) The method I thought of was dividing real and imag to learn the input layer into two , but I can't find such a method well..

Expert Answer

Profile picture of John Michell John Michell answered . 2025-11-20

You can refer to the example: Modulation Classification with Deep Learning,  specifically the pretrained network and "Transform Complex Signals to Real Arrays" section.
 
The following code might help you:
 
inputSize = [64 1 2];
numSamples = 128;
numClasses = 4;

%% Generate random data for training the network.
trainData = randn([inputSize numSamples]);
trainLabels = categorical(randi([0 numClasses-1], numSamples,1));

%% Create a network.
layers = [
    imageInputLayer(inputSize,'Name','input')  
    convolution2dLayer([3 1],16,'Padding','same','Name','conv_1')
    batchNormalizationLayer('Name','BN_1')
    reluLayer('Name','relu_1')
    fullyConnectedLayer(10,'Name','fc1')
    fullyConnectedLayer(numClasses,'Name','fc2')
    softmaxLayer('Name','softmax')
    classificationLayer('Name','classOutput')];

lgraph = layerGraph(layers);

analyzeNetwork(lgraph);
%% Define training options.
options = trainingOptions('adam', ...
    'InitialLearnRate',0.005, ...
    'LearnRateSchedule','piecewise',...
    'MaxEpochs',100, ...
    'MiniBatchSize',128, ...
    'Verbose',1, ...
    'Plots','training-progress');

%% Train the network.
net = trainNetwork(trainData,trainLabels,layers,options);


Not satisfied with the answer ?? ASK NOW

Get a Free Consultation or a Sample Assignment Review!