但是在训练过程中训练进度显示准确度已经达到100左右,但是测试精度只有50%。
为了控制变量我甚至使用了相同的训练集和测试集,效果依然不一样。请问是什么问题呢?
网络部分参考下文:
// =========================设计LSTM网络=================================
yTrain_categorical=categorical(yTrain);
numClasses=numel(categories(yTrain_categorical));
yTest_categorical=categorical(yTest);
sequenceInput=size(xTrainFeatureSD{1},1); // 如果选了3种特征作为数据,这里改为”3″
// 创建用于sequence-to-label分类的LSTM步骤如下:
// 1. 创建sequence input layer
// 2. 创建若干个LSTM layer
// 3. 创建一个fully connected layer
// 4. 创建一个softmax layer
// 5. 创建一个classification outputlayer
// 注意将sequence input layer的size设置为所包含的特征类别数,本例中,1或2或3,取决于你用了几种特征。fully connected layer的参数为分类数,本例中为8.
layers = [ …
sequenceInputLayer(sequenceInput)
lstmLayer(256,’OutputMode’,’last’)
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer
];
maxEpochs=600;
miniBatchSize=32;
// 如果不想展示训练过程,
options = trainingOptions(‘adam’, …
‘ExecutionEnvironment’, ‘gpu’,…
‘SequenceLength’, ‘longest’,…
‘MaxEpochs’,maxEpochs, …
‘MiniBatchSize’, miniBatchSize, …
‘InitialLearnRate’, 0.001, …
‘GradientThreshold’, 1, …
‘plots’,’training-progress’, …
‘Verbose’,true);
// ======================训练网络=========================
net2 = trainNetwork(xTrainFeatureSD,yTrain_categorical,layers,options);
// ======================测试网路==========================
testPred2 = classify(net2,xTestFeatureSD);
// 打印混淆矩阵
plotconfusion(yTest_categorical’,testPred2′,’Testing Accuracy’)
———
原文链接:https://blog.csdn.net/weixin_43196262/article/details/118053421
Original: https://blog.csdn.net/Cavend1sh/article/details/123970192
Author: 素质教育漏网之鱼397
Title: MATALB创建LSTM,训练集精度高但是测试集精度很低是什么原因?
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/689952/
转载文章受原作者版权保护。转载请注明原作者出处!