How to Train 1d CNN on Custom dataset in matrix form in MATLAB

Hi everyone, i hope you are doing well.
yanqi liu answer the question with 2D CNN, But i wanted to train 1D CNN
i have the following dataset myFile.txt includes 102x5,in which first 4 coloums are the Number of Observation and the last column are the Discrete labels/Classes for the dataset. I want to train 1D-CNN on this dataset
sz = size(dataset);
dataset = dataset(randperm(sz(1)),:);
traindata=dataset(:,1:4);
trainlabel=categorical(dataset(:,5));
classes = unique(trainlabel)
numClasses = numel(unique(trainlabel))
PD = 0.80 ;
Ptrain = []; Ttrain = [];
Ptest = []; Ttest = [];
for i = 1 : length(classes)
indi = find(trainlabel==classes(i));
indi = indi(randperm(length(indi)));
indj = round(length(indi)*PD);
Ptrain = [Ptrain; traindata(indi(1:indj),:)]; Ttrain = [Ttrain; trainlabel(indi(1:indj),:)];
Ptest = [Ptest; traindata(indi(1+indj:end),:)]; Ttest = [Ttest; trainlabel(indi(1+indj:end),:)];
end
Ptrain=(reshape(Ptrain', [4,1,1,size(Ptrain,1)]));
Ptest=(reshape(Ptest', [4,1,1,size(Ptest,1)]));
layers = [imageInputLayer([4 1 1])
convolution2dLayer([3 1],3,'Stride',1)
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2,'Stride',2,'Padding',[0 0 0 1])
dropoutLayer
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
options = trainingOptions('adam', ...
'MaxEpochs',3000, ...
'Shuffle','every-epoch', ...
'Plots','training-progress', ...
'Verbose',false, ...
'ValidationData',{Ptest,Ttest},...
'ExecutionEnvironment', 'cpu', ...
'ValidationPatience',Inf);
net = trainNetwork(Ptrain,Ttrain,layers,options);

3 Comments

yes,sir,may be “convolution1dLayer” is not exist,may be use convolution2dLayer and set one dimension to 1 to use it as convolution1dLayer
@yanqi liu where i can change in convolution2dLayer to set dimension 1

Sign in to comment.

Answers (1)

yes,sir,if 2021b has convolution1dLayer,so we can make the cnn as follows,then we can try train it
layers = [sequenceInputLayer(4)
convolution1dLayer(3,32,Padding="causal")
reluLayer
globalMaxPooling1dLayer
dropoutLayer
fullyConnectedLayer(5)
softmaxLayer
classificationLayer];
layers
layers =
8×1 Layer array with layers: 1 '' Sequence Input Sequence input with 4 dimensions 2 '' Convolution 32 3 convolutions with stride 1 and padding 'causal' 3 '' ReLU ReLU 4 '' 1-D Global Max Pooling 1-D global max pooling 5 '' Dropout 50% dropout 6 '' Fully Connected 5 fully connected layer 7 '' Softmax softmax 8 '' Classification Output crossentropyex

8 Comments

dataset = [0.008,2.5699e+09,-60.397,5.0922e-06,1
0.0084998,2.5698e+09,-59.954,5.0719e-06,1
0.0089996,2.5701e+09,-59.638,5.0947e-06,1
0.0094995,2.5696e+09,-59.246,5.0906e-06,1
0.0099995,2.5701e+09,-58.858,5.0083e-06,1
0.010499,2.5696e+09,-58.538,4.9623e-06,1
0.010999,2.5702e+09,-58.004,4.96e-06,1
0.011499,2.5705e+09,-57.557,4.99e-06,1
0.03,2.5802e+09,-58.372,9.9782e-06,2
0.03055,2.5803e+09,-58.253,9.9844e-06,2
0.0311,2.5801e+09,-58.22,9.9826e-06,2
0.03165,2.5799e+09,-58.096,1.0018e-05,2
0.094902,2.5798e+09,-48.896,1.0022e-05,2
0.095451,2.5805e+09,-48.955,1.0003e-05,2
0.096001,2.5804e+09,-48.721,1.0002e-05,2
0.096551,2.5796e+09,-48.758,1.0011e-05,2
0.097101,2.5799e+09,-48.639,1.0021e-05,2
0.097652,2.5797e+09,-48.812,1.002e-05,2
0.098202,2.5797e+09,-48.622,1.0005e-05,2
0.098752,2.5801e+09,-48.592,1.0009e-05,2
0.099302,2.5796e+09,-48.571,9.989e-06,2
0.099852,2.5804e+09,-48.707,1.0001e-05,2
0.1004,2.5799e+09,-48.712,1.0013e-05,2
0.10095,2.5797e+09,-48.67,1.0008e-05,2
0.1015,2.5804e+09,-48.555,1.0002e-05,2
0.1,2.5904e+09,-56.358,1.4981e-05,3
0.10057,2.59e+09,-55.861,1.4994e-05,3
0.10114,2.5902e+09,-55.625,1.4918e-05,3
0.10171,2.5902e+09,-55.158,1.5037e-05,3
0.10228,2.5901e+09,-54.942,1.5006e-05,3
0.10285,2.5904e+09,-54.477,1.5099e-05,3
0.10342,2.5899e+09,-54.001,1.5055e-05,3
0.10399,2.5896e+09,-53.86,1.5047e-05,3
0.10456,2.5901e+09,-53.599,1.4958e-05,3
0.10513,2.5902e+09,-53.212,1.5004e-05,3
0.1057,2.5896e+09,-52.693,1.5076e-05,3
0.10627,2.59e+09,-52.356,1.4937e-05,3
0.10684,2.5903e+09,-52.188,1.4938e-05,3
0.10741,2.5902e+09,-51.769,1.4918e-05,3
0.10798,2.5897e+09,-51.339,1.4932e-05,3
0.13,2.6001e+09,-58.171,4.9896e-05,4
0.1461,2.6004e+09,-53.86,5.0058e-05,4
0.14725,2.5996e+09,-53.42,4.9917e-05,4
0.1484,2.6002e+09,-53.152,5.0033e-05,4
0.14955,2.6e+09,-52.855,5.0033e-05,4
0.1507,2.5996e+09,-52.568,5.0067e-05,4
0.15185,2.6002e+09,-52.298,5.0028e-05,4
0.153,2.5999e+09,-52.044,5.0002e-05,4
0.15415,2.5996e+09,-51.865,4.992e-05,4
0.1553,2.5998e+09,-51.591,4.997e-05,4
0.15645,2.5996e+09,-51.336,5.0093e-05,4
0.1576,2.6002e+09,-51.19,5.0095e-05,4
0.15875,2.6005e+09,-50.951,4.9887e-05,4
0.1599,2.5995e+09,-50.693,4.9926e-05,4
0.16105,2.6e+09,-50.461,5.012e-05,4
0.1622,2.6004e+09,-50.302,5.0023e-05,4
0.16335,2.6001e+09,-50.048,4.9884e-05,4
0.1645,2.5997e+09,-49.878,5.0005e-05,4
0.16565,2.5997e+09,-49.791,5.0064e-05,4
0.1668,2.6e+09,-49.524,5.0041e-05,4
0.16795,2.6005e+09,-49.388,5.0036e-05,4
0.1691,2.6004e+09,-49.174,5.0053e-05,4
0.17025,2.5995e+09,-48.996,5.0016e-05,4
0.1714,2.5996e+09,-48.934,4.9977e-05,4
0.17255,2.6e+09,-48.782,5.0048e-05,4
0.1737,2.6005e+09,-48.727,5.0117e-05,4
0.17485,2.5997e+09,-48.641,4.9965e-05,4
0.176,2.6003e+09,-48.484,4.9884e-05,4
0.17715,2.5998e+09,-48.39,4.989e-05,4
0.1783,2.6003e+09,-48.42,4.9925e-05,4
0.17945,2.6005e+09,-48.393,4.9896e-05,4
0.1806,2.5997e+09,-48.316,4.9955e-05,4
0.18175,2.6e+09,-48.215,4.99e-05,4
0.1829,2.5997e+09,-48.125,5.0049e-05,4
0.18405,2.5997e+09,-48.28,4.9908e-05,4
0.1852,2.6004e+09,-48.275,5.0074e-05,4
0.18635,2.6001e+09,-48.135,5.0007e-05,4
0.1875,2.6004e+09,-48.314,4.9951e-05,4
0.18865,2.6e+09,-48.185,4.9916e-05,4
0.1898,2.5995e+09,-48.271,5.0097e-05,4
0.19095,2.5996e+09,-48.395,4.9928e-05,4
0.1921,2.6004e+09,-48.396,4.9988e-05,4
0.19325,2.5997e+09,-48.455,5.0102e-05,4
0.1944,2.6e+09,-48.575,5.0096e-05,4
0.19555,2.5998e+09,-48.663,5.0079e-05,4
0.25,2.6037e+09,-75.123,2.0454e-06,5
0.25075,2.6042e+09,-73.315,1.999e-06,5
0.2515,2.6044e+09,-71.653,1.9823e-06,5
0.25225,2.6038e+09,-69.994,2.0639e-06,5
0.253,2.604e+09,-68.391,1.9963e-06,5
0.25375,2.6043e+09,-67.257,1.9299e-06,5
0.2545,2.6039e+09,-66.164,2.0163e-06,5
0.25525,2.6036e+09,-65.639,1.9588e-06,5
0.256,2.6038e+09,-65.321,1.913e-06,5
0.25675,2.6045e+09,-65.28,2.0615e-06,5
0.2575,2.6039e+09,-65.538,1.9969e-06,5
0.25825,2.6041e+09,-66.246,1.9181e-06,5
0.259,2.6041e+09,-67.172,2.0295e-06,5
0.25975,2.6041e+09,-68.554,2.0292e-06,5
0.2605,2.6043e+09,-69.869,2.0366e-06,5
0.26125,2.6043e+09,-71.51,1.9323e-06,5
0.262,2.6036e+09,-73.437,1.9219e-06,5];
sz = size(dataset);
dataset = dataset(randperm(sz(1)),:);
traindata=dataset(:,1:4);
trainlabel=categorical(dataset(:,5));
classes = unique(trainlabel);
numClasses = numel(unique(trainlabel));
PD = 0.80 ;
Ptrain = []; Ttrain = [];
Ptest = []; Ttest = [];
for i = 1 : length(classes)
indi = find(trainlabel==classes(i));
indi = indi(randperm(length(indi)));
indj = round(length(indi)*PD);
Ptrain = [Ptrain; traindata(indi(1:indj),:)]; Ttrain = [Ttrain; trainlabel(indi(1:indj),:)];
Ptest = [Ptest; traindata(indi(1+indj:end),:)]; Ttest = [Ttest; trainlabel(indi(1+indj:end),:)];
end
Ptrain2 = []; Ttrain2 = [];
Ptest2 = []; Ttest2 = [];
Ttrain2=categorical(Ttrain);
Ttest2=categorical(Ttest);
for i = 1 : size(Ptrain,1)
Ptrain2{i} = Ptrain(i,:)';
%Ttrain2{i} = Ttrain(i);
end
for i = 1 : size(Ptest,1)
Ptest2{i} = Ptest(i,:)';
%Ttest2{i} = Ttest(i);
end
layers = [sequenceInputLayer(4)
convolution1dLayer(3,32,Padding="causal")
reluLayer
globalMaxPooling1dLayer
dropoutLayer
fullyConnectedLayer(5)
softmaxLayer
classificationLayer];
options = trainingOptions('adam', ...
'MaxEpochs',3000, ...
'Shuffle','every-epoch', ...
'Verbose',false, ...
'ValidationData',{Ptest2,Ttest2},...
'ExecutionEnvironment', 'auto', ...
'ValidationPatience',Inf);
[net,dinfo] = trainNetwork(Ptrain2,Ttrain2,layers,options)
net =
SeriesNetwork with properties: Layers: [8×1 nnet.cnn.layer.Layer] InputNames: {'sequenceinput'} OutputNames: {'classoutput'}
dinfo = struct with fields:
TrainingLoss: [13.8038 13.2205 14.1926 14.5815 14.5815 12.6373 13.8038 12.2484 13.2205 14.7759 14.3870 13.2205 13.9982 12.6373 12.6373 13.2205 13.9982 13.8038 13.9982 13.6094 13.0261 13.2205 13.2205 12.8317 13.9982 12.0540 12.8317 … ] TrainingAccuracy: [13.4146 17.0732 10.9756 8.5366 8.5366 20.7317 13.4146 23.1707 17.0732 7.3171 9.7561 17.0732 12.1951 20.7317 20.7317 17.0732 12.1951 13.4146 12.1951 14.6341 18.2927 17.0732 17.0732 19.5122 12.1951 24.3902 19.5122 13.4146 … ] ValidationLoss: [13.5510 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 8.7683 NaN NaN NaN … ] ValidationAccuracy: [15 NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN NaN 45 NaN NaN NaN NaN NaN … ] BaseLearnRate: [0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 0.0010 … ] FinalValidationLoss: 13.5510 FinalValidationAccuracy: 15 OutputNetworkIteration: 3000
dataset = [0.008,2.5699e+09,-60.397,5.0922e-06,1
0.0084998,2.5698e+09,-59.954,5.0719e-06,1
0.0089996,2.5701e+09,-59.638,5.0947e-06,1
0.0094995,2.5696e+09,-59.246,5.0906e-06,1
0.0099995,2.5701e+09,-58.858,5.0083e-06,1
0.010499,2.5696e+09,-58.538,4.9623e-06,1
0.010999,2.5702e+09,-58.004,4.96e-06,1
0.011499,2.5705e+09,-57.557,4.99e-06,1
0.03,2.5802e+09,-58.372,9.9782e-06,2
0.03055,2.5803e+09,-58.253,9.9844e-06,2
0.0311,2.5801e+09,-58.22,9.9826e-06,2
0.03165,2.5799e+09,-58.096,1.0018e-05,2
0.094902,2.5798e+09,-48.896,1.0022e-05,2
0.095451,2.5805e+09,-48.955,1.0003e-05,2
0.096001,2.5804e+09,-48.721,1.0002e-05,2
0.096551,2.5796e+09,-48.758,1.0011e-05,2
0.097101,2.5799e+09,-48.639,1.0021e-05,2
0.097652,2.5797e+09,-48.812,1.002e-05,2
0.098202,2.5797e+09,-48.622,1.0005e-05,2
0.098752,2.5801e+09,-48.592,1.0009e-05,2
0.099302,2.5796e+09,-48.571,9.989e-06,2
0.099852,2.5804e+09,-48.707,1.0001e-05,2
0.1004,2.5799e+09,-48.712,1.0013e-05,2
0.10095,2.5797e+09,-48.67,1.0008e-05,2
0.1015,2.5804e+09,-48.555,1.0002e-05,2
0.1,2.5904e+09,-56.358,1.4981e-05,3
0.10057,2.59e+09,-55.861,1.4994e-05,3
0.10114,2.5902e+09,-55.625,1.4918e-05,3
0.10171,2.5902e+09,-55.158,1.5037e-05,3
0.10228,2.5901e+09,-54.942,1.5006e-05,3
0.10285,2.5904e+09,-54.477,1.5099e-05,3
0.10342,2.5899e+09,-54.001,1.5055e-05,3
0.10399,2.5896e+09,-53.86,1.5047e-05,3
0.10456,2.5901e+09,-53.599,1.4958e-05,3
0.10513,2.5902e+09,-53.212,1.5004e-05,3
0.1057,2.5896e+09,-52.693,1.5076e-05,3
0.10627,2.59e+09,-52.356,1.4937e-05,3
0.10684,2.5903e+09,-52.188,1.4938e-05,3
0.10741,2.5902e+09,-51.769,1.4918e-05,3
0.10798,2.5897e+09,-51.339,1.4932e-05,3
0.13,2.6001e+09,-58.171,4.9896e-05,4
0.1461,2.6004e+09,-53.86,5.0058e-05,4
0.14725,2.5996e+09,-53.42,4.9917e-05,4
0.1484,2.6002e+09,-53.152,5.0033e-05,4
0.14955,2.6e+09,-52.855,5.0033e-05,4
0.1507,2.5996e+09,-52.568,5.0067e-05,4
0.15185,2.6002e+09,-52.298,5.0028e-05,4
0.153,2.5999e+09,-52.044,5.0002e-05,4
0.15415,2.5996e+09,-51.865,4.992e-05,4
0.1553,2.5998e+09,-51.591,4.997e-05,4
0.15645,2.5996e+09,-51.336,5.0093e-05,4
0.1576,2.6002e+09,-51.19,5.0095e-05,4
0.15875,2.6005e+09,-50.951,4.9887e-05,4
0.1599,2.5995e+09,-50.693,4.9926e-05,4
0.16105,2.6e+09,-50.461,5.012e-05,4
0.1622,2.6004e+09,-50.302,5.0023e-05,4
0.16335,2.6001e+09,-50.048,4.9884e-05,4
0.1645,2.5997e+09,-49.878,5.0005e-05,4
0.16565,2.5997e+09,-49.791,5.0064e-05,4
0.1668,2.6e+09,-49.524,5.0041e-05,4
0.16795,2.6005e+09,-49.388,5.0036e-05,4
0.1691,2.6004e+09,-49.174,5.0053e-05,4
0.17025,2.5995e+09,-48.996,5.0016e-05,4
0.1714,2.5996e+09,-48.934,4.9977e-05,4
0.17255,2.6e+09,-48.782,5.0048e-05,4
0.1737,2.6005e+09,-48.727,5.0117e-05,4
0.17485,2.5997e+09,-48.641,4.9965e-05,4
0.176,2.6003e+09,-48.484,4.9884e-05,4
0.17715,2.5998e+09,-48.39,4.989e-05,4
0.1783,2.6003e+09,-48.42,4.9925e-05,4
0.17945,2.6005e+09,-48.393,4.9896e-05,4
0.1806,2.5997e+09,-48.316,4.9955e-05,4
0.18175,2.6e+09,-48.215,4.99e-05,4
0.1829,2.5997e+09,-48.125,5.0049e-05,4
0.18405,2.5997e+09,-48.28,4.9908e-05,4
0.1852,2.6004e+09,-48.275,5.0074e-05,4
0.18635,2.6001e+09,-48.135,5.0007e-05,4
0.1875,2.6004e+09,-48.314,4.9951e-05,4
0.18865,2.6e+09,-48.185,4.9916e-05,4
0.1898,2.5995e+09,-48.271,5.0097e-05,4
0.19095,2.5996e+09,-48.395,4.9928e-05,4
0.1921,2.6004e+09,-48.396,4.9988e-05,4
0.19325,2.5997e+09,-48.455,5.0102e-05,4
0.1944,2.6e+09,-48.575,5.0096e-05,4
0.19555,2.5998e+09,-48.663,5.0079e-05,4
0.25,2.6037e+09,-75.123,2.0454e-06,5
0.25075,2.6042e+09,-73.315,1.999e-06,5
0.2515,2.6044e+09,-71.653,1.9823e-06,5
0.25225,2.6038e+09,-69.994,2.0639e-06,5
0.253,2.604e+09,-68.391,1.9963e-06,5
0.25375,2.6043e+09,-67.257,1.9299e-06,5
0.2545,2.6039e+09,-66.164,2.0163e-06,5
0.25525,2.6036e+09,-65.639,1.9588e-06,5
0.256,2.6038e+09,-65.321,1.913e-06,5
0.25675,2.6045e+09,-65.28,2.0615e-06,5
0.2575,2.6039e+09,-65.538,1.9969e-06,5
0.25825,2.6041e+09,-66.246,1.9181e-06,5
0.259,2.6041e+09,-67.172,2.0295e-06,5
0.25975,2.6041e+09,-68.554,2.0292e-06,5
0.2605,2.6043e+09,-69.869,2.0366e-06,5
0.26125,2.6043e+09,-71.51,1.9323e-06,5
0.262,2.6036e+09,-73.437,1.9219e-06,5];
sz = size(dataset);
dataset = dataset(randperm(sz(1)),:);
traindata=dataset(:,1:4);
trainlabel=categorical(dataset(:,5));
classes = unique(trainlabel);
numClasses = numel(unique(trainlabel));
PD = 0.80 ;
Ptrain = []; Ttrain = [];
Ptest = []; Ttest = [];
for i = 1 : length(classes)
indi = find(trainlabel==classes(i));
indi = indi(randperm(length(indi)));
indj = round(length(indi)*PD);
Ptrain = [Ptrain; traindata(indi(1:indj),:)]; Ttrain = [Ttrain; trainlabel(indi(1:indj),:)];
Ptest = [Ptest; traindata(indi(1+indj:end),:)]; Ttest = [Ttest; trainlabel(indi(1+indj:end),:)];
end
Ptrain2 = []; Ttrain2 = [];
Ptest2 = []; Ttest2 = [];
Ttrain2=categorical(Ttrain);
Ttest2=categorical(Ttest);
for i = 1 : size(Ptrain,1)
Ptrain2{i} = Ptrain(i,:)';
%Ttrain2{i} = Ttrain(i);
end
for i = 1 : size(Ptest,1)
Ptest2{i} = Ptest(i,:)';
%Ttest2{i} = Ttest(i);
end
layers = [sequenceInputLayer(4)
convolution1dLayer(3,100,Padding="causal")
reluLayer
globalMaxPooling1dLayer
dropoutLayer
fullyConnectedLayer(50)
dropoutLayer
fullyConnectedLayer(5)
softmaxLayer
classificationLayer];
options = trainingOptions('adam', ...
'MaxEpochs',1000, ...
'Shuffle','every-epoch', ...
'Verbose',false, ...
'ValidationData',{Ptest2,Ttest2},...
'ExecutionEnvironment', 'auto', ...
'ValidationPatience',Inf);
[net,dinfo] = trainNetwork(Ptrain2,Ttrain2,layers,options);
figure; plot(dinfo.TrainingAccuracy);
yes,sir,here on web,we can not see the plot curve,so we get the train status info and plot it
this picture is train acc curve by stats info structure

Sign in to comment.

Categories

Products

Release

R2021b

Asked:

on 17 Feb 2022

Commented:

on 18 Feb 2022

Community Treasure Hunt

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

Start Hunting!