gpt4 book ai didi

matlab - Mnist数据集模式识别准确率

转载 作者:行者123 更新时间:2023-11-30 09:00:44 25 4
gpt4 key购买 nike

我对 matlab 完全陌生,这是我的第一个项目。 Mnist 有 60000 张 0 到 9 之间的图片用于训练,1000 张图片用于测试。我所做的是尝试使用平均值为所有这 10 个类别(0 到 9)制作一个模式。然后为了进行识别,我使用欧几里德距离。这很简单,但准确率确实很低。我不知道我的问题到底出在哪里,无法保证我的准确度达到这个百分比。准确率:1.73%

这是我的代码为我们全类找到 10 个模式:

root = 'F:\matlab\ex1\exercise-EquivaliencOfL2DistanceAndDotProduct\dataset';

fn = strcat (root, '\MnistTrainX.mat');
load (fn);

fn = strcat (root, '\MnistTrainY.mat');
load (fn);

weights = zeros (10, 784);
b = zeros (10, 1);

im=reshape(MnistTrainX(5,:),[28 ,28]);
imshow(im,[]);
imshow(im',[]);

for c=1 : 10
idx=find(MnistTrainY == c-1);
weights (c,:)=mean( MnistTrainX(idx,:));
end

trainAccuray = ComputeInnerProductAccuracy(weights,b, MnistTrainX,MnistTrainY);
display(trainAccuray);

fn = strcat (root, '\MnistTestX.mat');
load (fn);

fn = strcat (root, '\MnistTestY.mat');
load (fn);


testAccuray = ComputeInnerProductAccuracy(weights, b, MnistTestX, MnistTestY);
display(testAccuray);

这是准确度函数

function [acc]=ComputeInnerProductAccuracy(weights, b, X, Y)

n = size(X, 1);
minmat = zeros (60000, 2);
endmat = zeros (60000, 10);
m = size(X);
a=0;
for i=1 : n
for j=1 : 10
endmat(i,j)=sum((X(i,:)-(weights(j,:))).^2,2);
end

[minmat(i,1) ,minmat(i,2)]= min(endmat(i,:));
if minmat(i,2)== Y(i)
a=a+1;
end

end
acc=(a*100)/60000;
end

最佳答案

您的代码大部分是正确的,尽管效率很低。我不会花时间来提高效率,因为有很多领域需要解决。相反,我会专注于问题所在。代码有两处错误。首先是当你找到距离最小的数字时:

[minmat(i,1) ,minmat(i,2)]= min(endmat(i,:));

请注意,min 的第二个输出生成最小值从索引 1 开始的位置。 Y 中的类值应包含 0 到 9,但在您的情况下 min 的输出索引为 1 到 10。输出最小索引和相应的类值是 1彼此偏离,这可能就是你的准确性如此差的原因。

因此,在检查最小标签是否确实是事实之前,您必须从 minmat(i, 2) 中减去 1...或者您可以简单地将 1 添加到 Y(i) 检查时:

[minmat(i,1) ,minmat(i,2)]= min(endmat(i,:));
if minmat(i,2)== Y(i)+1 % Change
a=a+1;
end

第二个不正确的事情是“内积”函数(实际上你正在计算欧几里得距离......但让我们把这个放在一边)假设总是有 60000 个输入,但你的测试集没有这么多的输入。这对于您的训练数据来说效果很好,但它会报告您的测试数据的错误准确性。确保将函数中 60000 的所有实例更改为 n。您已在代码中创建了此变量,它确定有多少个输入。

关于matlab - Mnist数据集模式识别准确率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39889228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com