为什么我无法测试精度高于75%来自我安?

10视图(30天)
你好。我致力于开发一个ANN训练MNIST数据集的一部分。我想使用“ trainNetwork “MATLAB命令,因为它允许我robustely创建模型架构。我也想使用“实现hyperparameter调优 bayesopt ”。hyperparameters我试图调整neuons每层的数量,学习速率,优化器使用的类型。我的目标是最大化的测试精度。代码是我相信正常工作。然而,我无法获得测试结果精度在75%以上。我严重正则化模型,因为它有强烈的倾向去overfit,和我的代码如下所示。我走错了地方?如果不是,为什么我不能挤压精度大于75%吗?
清晰;clc;
rng (1);%不修改这条线
dir =“Datadir”;%例如:“C: \用户桌面\ tmnist_bundle_rgb \ \用户名\ tmnist_bundle_rgb”
imdir = fullfile (dir,“一个”);
%步骤1:读取和存储图像在img路径
datapath公司= readtable (dir +“\ index.csv”);
i = 1:高度(datapath公司)
datapath公司rawlabels (i) ={1}我;
img = imread (fullfile (dir, datapath公司{我2}));
img = rgb2gray (img);
特性(:,i) =重塑(img, [], 1);
结束
编码=翻转(眼(10));
标签=分类(rawlabels);
特点=正常化(特性,“范围”);
简历= cvpartition(标签,“坚持”,0.3,“分层”,真正的);
idx = cv.test;
X_train =双(特性(:~ idx) ');
y_train =标签(:,~ idx) ';
X_test =双(特性(:,idx) ');
y_test =标签(:,idx) ';
%定义贝叶斯优化的目标函数
目标= @ (x) -train_network (x。Layer1 x。Layer2 x。Layer3 x.Layer4,“亚当”x。LearningRate、X_train y_train,
X_test y_test);
%定义hyperparameters的搜索空间
层= {“16”,“32”,“64”,“128”,“256”};
var = [
optimizableVariable (“Layer1”层,“类型”,“分类”),
optimizableVariable (“Layer2”层,“类型”,“分类”),
optimizableVariable (“Layer3”层,“类型”,“分类”),
optimizableVariable (“Layer4”层,“类型”,“分类”),
optimizableVariable (“优化”,{“亚当”,“个”,“rmsprop”},“类型”,“分类”),
optimizableVariable (“LearningRate”(1 e-5, 1 e - 3),“转换”,“日志”)
];
%执行贝叶斯优化
结果= bayesopt(客观、var、
“MaxObj”,100,
“MaxTime”,8 * 60 * 60,
“IsObjectiveDeterministic”假的,
“UseParallel”、假);
%获取最佳hyperparameters和相应的客观价值
bestHyperparams = results.XAtMinObjective;
bestObjectiveValue = results.MinObjective;
%显示最佳hyperparameters和客观价值
disp (“最佳Hyperparameters:”);
disp (bestHyperparams);
disp (“最好的客观价值:”);
disp (bestObjectiveValue);
%定义培训网络的目标函数
函数精度= train_network (layer1 layer2、layer3 layer4,优化器,learningRate, X_train, y_train, X_test, y_test)
%你的数据集和把它加载到训练集和验证集
神经元=(16个32 64 128 256);
%定义基于hyperparameters层网络
layer1 =神经元(双(layer1));
layer2 =神经元(双(layer2));
layer3 =神经元(双(layer3));
layer4 =神经元(双(layer4));
如果layer2 > layer1 | | layer3 > layer1 | | layer3 > layer2 | | layer4 > layer3 | | layer4 > layer2 | | layer4 > layer1
精度=正;
返回;
结束
层= [
featureInputLayer (784)
fullyConnectedLayer (layer1)
reluLayer
batchNormalizationLayer
dropoutLayer (0.4)
fullyConnectedLayer (layer2)
reluLayer
batchNormalizationLayer
dropoutLayer (0.4)
fullyConnectedLayer (layer3)
reluLayer
batchNormalizationLayer
dropoutLayer (0.4)
fullyConnectedLayer (layer4)
reluLayer
batchNormalizationLayer
dropoutLayer (0.4)
fullyConnectedLayer (10)
softmaxLayer
classificationLayer
];
%指定培训选项
选择= trainingOptions(优化器,
“MaxEpochs”,100,
“MiniBatchSize”,16岁,
“InitialLearnRate”,learningRate);
%训练网络
网= trainNetwork (X_train、y_train层,选择);
%评估网络验证集和计算精度
预测=分类(净,X_test);
精度= = = y_test(预测)和/元素个数(y_test)
结束

答案(0)

s manbetx 845


释放

R2022a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的