LSTM实现四分类 MATLAB版

发布于:2024-05-14 ⋅ 阅读:(137) ⋅ 点赞:(0)

rowDist= repmat(1,1,308)

xcal = mat2cell(xcal,rowDist)

rowDist= repmat(1,1,102)

 xval = mat2cell(xval,rowDist)

rowDist= repmat(1,1,101)

xdata_validata = mat2cell(xdata_validata,rowDist)

filterSize =5;

numFilters = 30;

numFeatures = size(xcal{1},1);

layers = [ ...

sequenceInputLayer(numFeatures)

convolution1dLayer(filterSize,numFilters,Padding="causal")

reluLayer

layerNormalizationLayer

convolution1dLayer(filterSize,2*numFilters,Padding="causal")

reluLayer

layerNormalizationLayer

globalAveragePooling1dLayer

fullyConnectedLayer(4)

softmaxLayer

classificationLayer];

options = trainingOptions("adam", ...

MaxEpochs=60, ...

InitialLearnRate=0.01, ...

SequencePaddingDirection="left", Plots="training-progress", ...

Verbose=0);

miniBatchSize = 27;

net = trainNetwork(xcal, categorical(ycal), layers, options);

ycal_test = classify(net,xcal,SequencePaddingDirection="left");

acc1 = mean(ycal == double(ycal_test))

yval_test = classify(net,xval,SequencePaddingDirection="left");

acc2 = mean(yval == double(yval_test))

y_validata = classify(net,xdata_validata,SequencePaddingDirection="left");

acc3 = mean(ydata_validata == double(y_validata))

%%%%预测集

con = confusionmat(yval, double(yval_test));

% confu(:,abc)=con(:);

accuracy3(abc,1) = acc1;

accuracy3(abc,2) = con(1,1)/length(yval_zhengchang);

accuracy3(abc,3) = con(2,2)/length(yval_qingwei);

accuracy3(abc,4) = con(3,3)/length(yval_zhongdu);

accuracy3(abc,5) = con(4,4)/length(yval_yanzhong);

accuracy3(abc,6) = acc2;

% accuracy3(abc,7) = w;

% accuracy3(abc,8) = b;

%%%验证

con_valate = confusionmat(ydata_validata,double(y_validata));

accuracy3(abc,7) = acc3;

accuracy3(abc,8) = con_valate(1,1)/length(ydata_zhengchang_validate);

accuracy3(abc,9) = con_valate(2,2)/length(ydata_qingwei_validata);

accuracy3(abc,10) = con_valate(3,3)/length(ydata_zhongdu_validata);

accuracy3(abc,11) = con_valate(4,4)/length(ydata_yanzhong_validata);


网站公告

今日签到

点亮在社区的每一天
去签到