How to Train 1d CNN on Custom dataset in matrix form in MATLAB
Show older comments
Hi everyone, i hope you are doing well.
In my previous question : https://www.mathworks.com/matlabcentral/answers/1649260-how-to-train-cnn-on-custom-dataset-in-matrix-form
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
yanqi liu
on 17 Feb 2022
yes,sir,may be “convolution1dLayer” is not exist,may be use convolution2dLayer and set one dimension to 1 to use it as convolution1dLayer
Med Future
on 17 Feb 2022
Med Future
on 17 Feb 2022
Edited: Med Future
on 17 Feb 2022
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
8 Comments
Med Future
on 17 Feb 2022
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)
Med Future
on 17 Feb 2022
Med Future
on 17 Feb 2022
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);
Med Future
on 17 Feb 2022
Med Future
on 17 Feb 2022
yanqi liu
on 18 Feb 2022
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
Categories
Find more on Get Started with Deep Learning Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!