特征提取工作流程

这个例子展示了从图像数据中提取特征的完整工作流。

获得数据

本示例使用MNIST图像数据[1],该数据由手写数字的图像组成。这些图像的灰度是28 × 28像素。每个图像都有一个从0到9的关联标签,这是图像所代表的数字。

从获取图像和标签数据开始

http://yann.lecun.com/exdb/mnist/

解压缩文件。为了更好的性能,在这个很长的例子中,将测试数据作为训练数据和培训数据作为测试数据。

imageFileName =“t10k-images.idx3-ubyte”;labelFileName ='t10k-labels.idx1-ubyte'

处理这些文件以在工作区中加载它们。此处理函数的代码出现在本示例的末尾。

[xtrain,labeltrain] = processmnistdata(imagefilename,labelfilename);
读取MNIST图像数据…数据集中的图像数量:10000…每个图像是28 × 28像素…图像数据被读取为一个维数为10000 × 784的矩阵。读取图像数据结束。读取MNIST标签数据…数据集中的标签数:10000…标签数据被读取为一个维数矩阵:10000 × 1…标签数据读取结束。

查看一些图片。

rng (“默认”%的再现性numrows =大小(Xtrain, 1);ims =兰迪(numrows 4 1);:一个= Xtrain (ims);I = 1:4 pp{I} =重塑(imgs(I,:),28,28);结束ppf = [pp{1},{2}页;pp{3},{4}页);imshow (ppf);

选择新的特征尺寸

在选择要提取的特征数量时,有几个考虑因素:

  • 更多的特性使用更多的内存和计算时间。

  • 较少的特征会产生较差的分类器。

对于本例,选择100个特性。

q = 100;

提取的特征

有两个特征提取功能,sparsefilt黎加.开始sparsefilt功能。将迭代次数设置为10,以便提取不需要太长。

通常,您可以通过运行sparsefilt几百次迭代的几个迭代算法。运行太多迭代的算法可能导致分类准确性下降,一种过度的问题。

sparsefilt迭代10次,得到稀疏滤波模型。

Mdl = sparsefilt (Xtrain q“IterationLimit”10);
警告:解算器LBFGS不能收敛到一个解。

sparsefilt警告内部LBFGS优化器没有收敛。优化器没有收敛,因为您将迭代限制设置为10。不过,您可以使用结果来训练分类器。

创建分类器

将原始数据转换为新的特征表示。

newx =变换(MDL,XTrain);

根据变换的数据和正确的分类标签列车线性分类器LabelTrain.学习模型的准确性对模型的精度非常敏感fitcecoc.正则化参数λ.试着找到最好的价值λ通过使用OptimizeHyperparameters名称-值对。请注意,这种优化需要时间。如果您有并行计算工具箱™许可证,请使用并行计算以更快地执行。如果您没有并行许可证,请删除UseParallel在运行此脚本之前调用。

t = templatelinear('求解'“lbfgs”);选择=结构(“UseParallel”,真正的);Cmdl = fitcecoc (NewX LabelTrain,“学习者”t......“OptimizeHyperparameters”,{“λ”},......“HyperparameterOptimizationOptions”、选择);
将目标函数复制到工人......对工人进行复制目标职能。|================================================================================================| | Iter | |活跃Eval客观客观| | | BestSoFar | BestSoFar |λ| | |工人结果| | |运行时| | (estim(观察) .) | | |================================================================================================| | 1 | 6 |最好的0.5777 | 8.5334 | 0.5777 | 0.5777 | 0.20606 | | 2 | 5 | Accept | 0.8865 | 8.9062 | 0.2041 | 0.27206 | 8.8234 | | 3 | 5 | Best | 0.2041 | 9.7024 | 0.2041 | 0.27206 | 0.026804 | | 4 | 6 | Best | 0.1077 | 14.629 | 0.1077 | 0.10773 | 1.7309e-09 | | 5 | 6 | Best | 0.0962 | 15.767 | 0.0962 | 0.096203 | 0.0002442 | | 6 | 6 | Accept | 0.1999 | 6.4363 | 0.0962 | 0.09622 | 0.024862 | | 7 | 6 | Accept | 0.2074 | 6.4171 | 0.0962 | 0.096222 | 0.029034 | | 8 | 6 | Accept | 0.1065 | 12.974 | 0.0962 | 0.096222 | 2.037e-08 | | 9 | 6 | Accept | 0.0977 | 22.976 | 0.0962 | 0.096216 | 8.0495e-06 | | 10 | 6 | Accept | 0.1237 | 8.5033 | 0.0962 | 0.096199 | 0.0029745 | | 11 | 6 | Accept | 0.1076 | 10.653 | 0.0962 | 0.096208 | 0.00080903 | | 12 | 6 | Accept | 0.1034 | 16.761 | 0.0962 | 0.0962 | 3.2145e-07 | | 13 | 6 | Best | 0.0933 | 16.715 | 0.0933 | 0.093293 | 6.3327e-05 | | 14 | 6 | Accept | 0.109 | 12.946 | 0.0933 | 0.09328 | 5.7887e-09 | | 15 | 6 | Accept | 0.0994 | 18.805 | 0.0933 | 0.093312 | 1.8981e-06 | | 16 | 6 | Accept | 0.106 | 15.088 | 0.0933 | 0.093306 | 7.4684e-08 | | 17 | 6 | Accept | 0.0952 | 20.372 | 0.0933 | 0.093285 | 2.2831e-05 | | 18 | 6 | Accept | 0.0933 | 14.528 | 0.0933 | 0.093459 | 0.00013097 | | 19 | 6 | Accept | 0.1082 | 12.764 | 0.0933 | 0.093458 | 1.0001e-09 | | 20 | 6 | Best | 0.0915 | 16.157 | 0.0915 | 0.092391 | 8.3234e-05 | |================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 21 | 6 | Accept | 0.8865 | 6.6373 | 0.0915 | 0.092387 | 1.6749 | | 22 | 6 | Accept | 0.0929 | 17.306 | 0.0915 | 0.092457 | 0.00010668 | | 23 | 6 | Accept | 0.0937 | 19.046 | 0.0915 | 0.092535 | 5.0962e-05 | | 24 | 6 | Accept | 0.0916 | 17.932 | 0.0915 | 0.092306 | 9.023e-05 | | 25 | 6 | Accept | 0.0935 | 17.53 | 0.0915 | 0.092431 | 0.00011726 | | 26 | 6 | Accept | 0.1474 | 8.3795 | 0.0915 | 0.092397 | 0.006997 | | 27 | 6 | Accept | 0.0939 | 19.188 | 0.0915 | 0.092427 | 5.2557e-05 | | 28 | 6 | Accept | 0.1147 | 10.686 | 0.0915 | 0.092432 | 0.0015036 | | 29 | 6 | Accept | 0.1049 | 16.609 | 0.0915 | 0.092434 | 1.4871e-07 | | 30 | 6 | Accept | 0.1069 | 13.929 | 0.0915 | 0.092435 | 1.0899e-08 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 83.1976 seconds. Total objective function evaluation time: 416.8767 Best observed feasible point: Lambda __________ 8.3234e-05 Observed objective function value = 0.0915 Estimated objective function value = 0.09245 Function evaluation time = 16.1569 Best estimated feasible point (according to models): Lambda _________ 9.023e-05 Estimated objective function value = 0.092435 Estimated function evaluation time = 17.0972

评估分类器

当应用到测试数据时检查分类器的错误。首先,加载测试数据。

imageFileName =“train-images.idx3-ubyte”;labelFileName =“train-labels.idx1-ubyte”;[Xtest, LabelTest] = processMNISTdata (imageFileName labelFileName);
读取MNIST图像数据…数据集中的图像数量:60000…每个图像是28 × 28像素…图像数据被读取为一个维数为60000 × 784的矩阵。读取图像数据结束。读取MNIST标签数据…数据集中的标签数量:60000…标签数据被读取为一个矩阵:60000 × 1…标签数据读取结束。

将分类器应用于测试数据时计算分类丢失。

Xtest TestX =变换(Mdl);损失=损失(Cmdl TestX LabelTest)
损失= 0.1009

这种转换是否产生了比在原始数据上训练的更好的分类器?基于原始训练数据创建分类器并评估其损失。

Omdl = fitcecoc (Xtrain LabelTrain,“学习者”t......“OptimizeHyperparameters”,{“λ”},......“HyperparameterOptimizationOptions”、选择);Losso =损失(Omdl Xtest LabelTest)
将目标函数复制到工人......对工人进行复制目标职能。| =================================================================================================|磨练|活跃|eval |目标|目标|Bestsofar |Bestsofar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 1 | 5 | Best | 0.0779 | 46.965 | 0.0779 | 0.0779 | 5.7933e-08 | | 2 | 5 | Accept | 0.0779 | 47.003 | 0.0779 | 0.0779 | 3.8643e-09 | | 3 | 5 | Accept | 0.0779 | 47.068 | 0.0779 | 0.0779 | 1.3269e-06 | | 4 | 6 | Accept | 0.078 | 60.714 | 0.0779 | 0.077925 | 3.0332e-05 | | 5 | 6 | Accept | 0.0787 | 133.21 | 0.0779 | 0.0779 | 0.011605 | | 6 | 6 | Best | 0.0775 | 135.97 | 0.0775 | 0.077983 | 0.00020291 | | 7 | 6 | Accept | 0.0779 | 44.642 | 0.0775 | 0.077971 | 5.735e-08 | | 8 | 6 | Accept | 0.0785 | 123.19 | 0.0775 | 0.0775 | 0.024589 | | 9 | 6 | Accept | 0.0779 | 43.574 | 0.0775 | 0.0775 | 1.0042e-09 | | 10 | 6 | Accept | 0.0779 | 43.038 | 0.0775 | 0.0775 | 4.7227e-06 | | 11 | 6 | Best | 0.0774 | 137.51 | 0.0774 | 0.077451 | 0.00021639 | | 12 | 6 | Accept | 0.0779 | 44.07 | 0.0774 | 0.077452 | 6.7132e-09 | | 13 | 6 | Accept | 0.0779 | 44.822 | 0.0774 | 0.077453 | 2.873e-07 | | 14 | 6 | Best | 0.0744 | 233.12 | 0.0744 | 0.074402 | 6.805 | | 15 | 6 | Accept | 0.0778 | 140.49 | 0.0744 | 0.074406 | 0.66889 | | 16 | 6 | Accept | 0.0774 | 149.32 | 0.0744 | 0.074405 | 0.0002769 | | 17 | 6 | Accept | 0.0774 | 155 | 0.0744 | 0.074404 | 0.00046083 | | 18 | 6 | Accept | 0.0765 | 152.63 | 0.0744 | 0.074687 | 0.00027101 | | 19 | 6 | Accept | 0.0768 | 156.32 | 0.0744 | 0.077558 | 0.00026573 | | 20 | 6 | Best | 0.0725 | 255.51 | 0.0725 | 0.073249 | 9.9961 | |================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 21 | 6 | Best | 0.0723 | 221.5 | 0.0723 | 0.073161 | 4.212 | | 22 | 6 | Accept | 0.0732 | 259.51 | 0.0723 | 0.073166 | 9.9916 | | 23 | 6 | Best | 0.072 | 261.94 | 0.072 | 0.072848 | 9.9883 | | 24 | 6 | Accept | 0.0778 | 122.56 | 0.072 | 0.072854 | 0.13413 | | 25 | 6 | Accept | 0.0733 | 258.54 | 0.072 | 0.072946 | 9.9904 | | 26 | 6 | Accept | 0.0746 | 244.53 | 0.072 | 0.073144 | 7.0911 | | 27 | 6 | Accept | 0.0779 | 44.573 | 0.072 | 0.073134 | 2.1183e-08 | | 28 | 6 | Accept | 0.078 | 45.478 | 0.072 | 0.073126 | 1.1663e-05 | | 29 | 6 | Accept | 0.0779 | 43.954 | 0.072 | 0.073118 | 1.336e-07 | | 30 | 6 | Accept | 0.0779 | 44.574 | 0.072 | 0.073112 | 1.7282e-09 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 690.8688 seconds. Total objective function evaluation time: 3741.3176 Best observed feasible point: Lambda ______ 9.9883 Observed objective function value = 0.072 Estimated objective function value = 0.073112 Function evaluation time = 261.9357 Best estimated feasible point (according to models): Lambda ______ 9.9961 Estimated objective function value = 0.073112 Estimated function evaluation time = 257.9556 Losso = 0.0865

基于稀疏滤波的分类器比基于原始数据的分类器损失稍高。然而,分类器只使用100个特征,而不是原始数据中的784个特征,而且创建速度快得多。尝试通过增加来制作一个更好的稀疏过滤分类器从100到200,仍然远低于784。

q = 200;Mdl2 = sparsefilt (Xtrain q“IterationLimit”10);NewX =变换(Mdl2 Xtrain);TestX =变换(Mdl2 Xtest);Cmdl = fitcecoc (NewX LabelTrain,“学习者”t......“OptimizeHyperparameters”,{“λ”},......“HyperparameterOptimizationOptions”、选择);Loss2 =损失(Cmdl TestX LabelTest)
警告:解算器LBFGS不能收敛到一个解。将目标函数复制到工人......对工人进行复制目标职能。| =================================================================================================|磨练|活跃|eval |目标|目标|Bestsofar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 1 | 5 | Best | 0.8865 | 7.3578 | 0.8865 | 0.8865 | 1.93 | | 2 | 5 | Accept | 0.8865 | 7.3408 | 0.8865 | 0.8865 | 2.5549 | | 3 | 6 | Best | 0.0693 | 9.0077 | 0.0693 | 0.069376 | 9.9515e-09 | | 4 | 5 | Accept | 0.0705 | 9.1067 | 0.0693 | 0.069374 | 1.2123e-08 | | 5 | 5 | Accept | 0.1489 | 9.5685 | 0.0693 | 0.069374 | 0.015542 | | 6 | 6 | Accept | 0.8865 | 7.5032 | 0.0693 | 0.06943 | 4.7067 | | 7 | 6 | Accept | 0.071 | 8.8044 | 0.0693 | 0.069591 | 5.0861e-09 | | 8 | 6 | Accept | 0.0715 | 8.9517 | 0.0693 | 0.070048 | 1.001e-09 | | 9 | 6 | Accept | 0.0833 | 14.393 | 0.0693 | 0.069861 | 0.0014191 | | 10 | 6 | Best | 0.0594 | 25.565 | 0.0594 | 0.059458 | 6.767e-05 | | 11 | 6 | Accept | 0.0651 | 20.074 | 0.0594 | 0.059463 | 8.078e-07 | | 12 | 6 | Accept | 0.0695 | 14.495 | 0.0594 | 0.059473 | 1.0381e-07 | | 13 | 6 | Accept | 0.1042 | 12.085 | 0.0594 | 0.059386 | 0.0039745 | | 14 | 6 | Accept | 0.065 | 20.235 | 0.0594 | 0.059416 | 0.00031759 | | 15 | 6 | Accept | 0.0705 | 10.929 | 0.0594 | 0.059416 | 3.6503e-08 | | 16 | 6 | Accept | 0.0637 | 30.593 | 0.0594 | 0.059449 | 8.8718e-06 | | 17 | 6 | Accept | 0.064 | 25.084 | 0.0594 | 0.059464 | 2.6286e-06 | | 18 | 6 | Accept | 0.0605 | 31.964 | 0.0594 | 0.059387 | 2.459e-05 | | 19 | 6 | Accept | 0.0606 | 23.149 | 0.0594 | 0.059312 | 0.0001464 | | 20 | 6 | Accept | 0.0602 | 32.178 | 0.0594 | 0.059874 | 4.1437e-05 | |================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 21 | 6 | Accept | 0.0594 | 27.686 | 0.0594 | 0.059453 | 8.0717e-05 | | 22 | 6 | Accept | 0.0612 | 33.427 | 0.0594 | 0.059476 | 1.6878e-05 | | 23 | 6 | Accept | 0.0673 | 17.444 | 0.0594 | 0.059475 | 3.1788e-07 | | 24 | 6 | Best | 0.0593 | 26.262 | 0.0593 | 0.05944 | 7.8179e-05 | | 25 | 6 | Accept | 0.248 | 7.6345 | 0.0593 | 0.059409 | 0.095654 | | 26 | 6 | Accept | 0.0598 | 28.536 | 0.0593 | 0.059465 | 5.0819e-05 | | 27 | 6 | Accept | 0.0701 | 9.0545 | 0.0593 | 0.059466 | 1.8937e-09 | | 28 | 5 | Accept | 0.7081 | 7.1176 | 0.0593 | 0.059372 | 0.30394 | | 29 | 5 | Accept | 0.0676 | 11.782 | 0.0593 | 0.059372 | 6.1136e-08 | | 30 | 3 | Accept | 0.06 | 23.556 | 0.0593 | 0.059422 | 0.00010144 | | 31 | 3 | Accept | 0.0725 | 16.069 | 0.0593 | 0.059422 | 0.00069403 | | 32 | 3 | Accept | 0.1928 | 8.3732 | 0.0593 | 0.059422 | 0.040402 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 32 Total elapsed time: 97.7946 seconds. Total objective function evaluation time: 545.3255 Best observed feasible point: Lambda __________ 7.8179e-05 Observed objective function value = 0.0593 Estimated objective function value = 0.059422 Function evaluation time = 26.2624 Best estimated feasible point (according to models): Lambda __________ 7.8179e-05 Estimated objective function value = 0.059422 Estimated function evaluation time = 26.508 Loss2 = 0.0682

这次分类损失比原始数据分类器的分类损失小。

试着黎加

试试其他的特征提取函数,黎加.提取200个特征,创建分类器,并检查其在测试数据上的损失。使用更多的迭代黎加功能,因为黎加迭代次数越多,性能是否会更好sparsefilt用途。

通常在特征提取之前,将输入数据“预白化”作为数据预处理步骤。预白步骤包括两个变换,去相关和标准化,使预测器具有零均值和恒等协方差。黎加万博1manbetx仅支持标准化转换。您使用标准化名称-值对参数使预测器的平均值和单位方差为零。或者,您可以通过应用zscore转换之前调用sparsefilt或者黎加

Mdl3 =黎加(Xtrain q“IterationLimit”, 400,“标准化”,真正的);NewX =变换(Mdl3 Xtrain);TestX =变换(Mdl3 Xtest);Cmdl = fitcecoc (NewX LabelTrain,“学习者”t......“OptimizeHyperparameters”,{“λ”},......“HyperparameterOptimizationOptions”、选择);Loss3 =损失(Cmdl TestX LabelTest)
警告:解算器LBFGS不能收敛到一个解。将目标函数复制到工人......对工人进行复制目标职能。|================================================================================================| | Iter | |活跃Eval客观客观| | | BestSoFar | BestSoFar |λ| | |工人结果| | |运行时| | (estim(观察) .) | | |================================================================================================| | 1 | 6 |最好的0.1179 | 12.012 | 0.1179 | 0.1179 | 8.4727 | | 2 | 6 | Best | 0.082 | 13.384 | 0.082 | 0.083897 | 4.3291e-09 | | 3 | 6 | Best | 0.0809 | 18.917 | 0.0809 | 0.080902 | 1.738e-05 | | 4 | 6 | Accept | 0.0821 | 19.172 | 0.0809 | 0.08091 | 3.8101e-06 | | 5 | 6 | Accept | 0.0921 | 14.445 | 0.0809 | 0.086349 | 2.3753 | | 6 | 6 | Accept | 0.0809 | 13.393 | 0.0809 | 0.083836 | 1.3757e-08 | | 7 | 6 | Best | 0.076 | 28.075 | 0.076 | 0.081808 | 0.00027773 | | 8 | 6 | Best | 0.0758 | 29.686 | 0.0758 | 0.078829 | 0.00068195 | | 9 | 6 | Accept | 0.0829 | 13.373 | 0.0758 | 0.078733 | 1.7543e-07 | | 10 | 6 | Accept | 0.0826 | 14.031 | 0.0758 | 0.078512 | 1.0045e-09 | | 11 | 6 | Accept | 0.0817 | 13.662 | 0.0758 | 0.078077 | 2.4568e-08 | | 12 | 6 | Accept | 0.0799 | 19.311 | 0.0758 | 0.077658 | 1.4061e-05 | | 13 | 6 | Best | 0.065 | 25.148 | 0.065 | 0.064974 | 0.060326 | | 14 | 6 | Accept | 0.0787 | 23.434 | 0.065 | 0.064947 | 0.00012407 | | 15 | 6 | Accept | 0.072 | 19.167 | 0.065 | 0.064997 | 0.43899 | | 16 | 6 | Accept | 0.073 | 28.39 | 0.065 | 0.065053 | 0.0023721 | | 17 | 6 | Accept | 0.0787 | 29.887 | 0.065 | 0.064928 | 0.00042914 | | 18 | 6 | Accept | 0.0662 | 26.374 | 0.065 | 0.064295 | 0.0077638 | | 19 | 6 | Accept | 0.0652 | 24.937 | 0.065 | 0.064502 | 0.087389 | | 20 | 6 | Accept | 0.0655 | 25.416 | 0.065 | 0.064762 | 0.072931 | |================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 21 | 6 | Best | 0.0645 | 25.529 | 0.0645 | 0.064691 | 0.059245 | | 22 | 6 | Accept | 0.065 | 23.832 | 0.0645 | 0.06474 | 0.025521 | | 23 | 6 | Accept | 0.0819 | 20.343 | 0.0645 | 0.064732 | 7.2593e-07 | | 24 | 6 | Accept | 0.0664 | 23.732 | 0.0645 | 0.064718 | 0.1534 | | 25 | 6 | Accept | 0.0651 | 24.796 | 0.0645 | 0.064693 | 0.038371 | | 26 | 6 | Accept | 0.0651 | 25.449 | 0.0645 | 0.064613 | 0.014318 | | 27 | 6 | Accept | 0.0652 | 25.092 | 0.0645 | 0.064713 | 0.037107 | | 28 | 6 | Accept | 0.0645 | 24.404 | 0.0645 | 0.0647 | 0.042959 | | 29 | 6 | Accept | 0.0649 | 24.704 | 0.0645 | 0.064729 | 0.042776 | | 30 | 6 | Accept | 0.0652 | 24.341 | 0.0645 | 0.064786 | 0.035788 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 124.9755 seconds. Total objective function evaluation time: 654.4364 Best observed feasible point: Lambda ________ 0.059245 Observed objective function value = 0.0645 Estimated objective function value = 0.064932 Function evaluation time = 25.5294 Best estimated feasible point (according to models): Lambda ________ 0.042776 Estimated objective function value = 0.064786 Estimated function evaluation time = 24.7849 Loss3 = 0.0749

黎加与稀疏过滤分类器相比,基于分类器具有稍微较高的测试损耗。

尝试更多功能

特征提取函数的调优参数较少。一个可能影响结果的参数是所请求特性的数量。看看基于1000个特征(而不是之前尝试的200个特征或原始数据中的784个特征)的分类器工作得如何。使用比原始数据中出现的更多的特征被称为“过度完整”学习。相反,使用较少的特征被称为“不完全”学习。过完备学习可以提高分类准确率,而不完备学习可以节省记忆和时间。

q = 1000;Mdl4 = sparsefilt (Xtrain q“IterationLimit”10);NewX =变换(Mdl4 Xtrain);TestX =变换(Mdl4 Xtest);Cmdl = fitcecoc (NewX LabelTrain,“学习者”t......“OptimizeHyperparameters”,{“λ”},......“HyperparameterOptimizationOptions”、选择);LOST4 =损失(CMDL,TESTX,LABELTEST)
警告:解算器LBFGS不能收敛到一个解。将目标函数复制到工人......对工人进行复制目标职能。|================================================================================================| | Iter | |活跃Eval客观客观| | | BestSoFar | BestSoFar |λ| | |工人结果| | |运行时| | (estim(观察) .) | | |================================================================================================| | 1 | 6 |最好的0.5293 | 39.885 | 0.5293 | 0.5293 | 0.20333 | | 2 | 6 | Accept | 0.8022 | 43.475 | 0.5293 | 0.66575 | 0.77337 | | 3 | 6 | Best | 0.0406 | 52.594 | 0.0406 | 0.11113 | 9.1082e-09 | | 4 | 6 | Best | 0.0403 | 54.73 | 0.0403 | 0.060037 | 2.3947e-09 | | 5 | 6 | Accept | 0.0695 | 124.96 | 0.0403 | 0.040319 | 0.001361 | | 6 | 6 | Accept | 0.0406 | 53.691 | 0.0403 | 0.040207 | 1.0005e-09 | | 7 | 6 | Best | 0.0388 | 178.69 | 0.0388 | 0.038811 | 1.4358e-06 | | 8 | 6 | Accept | 0.0615 | 138.53 | 0.0388 | 0.038817 | 0.00088731 | | 9 | 6 | Best | 0.0385 | 61.81 | 0.0385 | 0.038557 | 7.4709e-08 | | 10 | 6 | Accept | 0.0399 | 54.198 | 0.0385 | 0.038555 | 2.1909e-08 | | 11 | 6 | Accept | 0.0402 | 234.55 | 0.0385 | 0.038639 | 0.000101 | | 12 | 6 | Accept | 0.0431 | 198.09 | 0.0385 | 0.038636 | 0.00018896 | | 13 | 6 | Accept | 0.0393 | 75.811 | 0.0385 | 0.039016 | 1.1597e-07 | | 14 | 6 | Accept | 0.0387 | 61.281 | 0.0385 | 0.038908 | 7.0518e-08 | | 15 | 6 | Accept | 0.0393 | 125.73 | 0.0385 | 0.038931 | 2.8429e-07 | | 16 | 6 | Accept | 0.0397 | 89.804 | 0.0385 | 0.039106 | 1.4603e-07 | | 17 | 6 | Accept | 0.0391 | 126.88 | 0.0385 | 0.039081 | 3.0065e-07 | | 18 | 6 | Accept | 0.0398 | 56.157 | 0.0385 | 0.039123 | 4.1563e-08 | | 19 | 6 | Accept | 0.0406 | 55.25 | 0.0385 | 0.039122 | 1.0014e-09 | | 20 | 6 | Accept | 0.0385 | 272.92 | 0.0385 | 0.039127 | 9.568e-06 | |================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 21 | 6 | Accept | 0.0412 | 55.191 | 0.0385 | 0.039124 | 3.3737e-09 | | 22 | 6 | Accept | 0.0394 | 229.72 | 0.0385 | 0.039117 | 3.2757e-06 | | 23 | 6 | Best | 0.0379 | 295.55 | 0.0379 | 0.039116 | 2.8439e-05 | | 24 | 6 | Accept | 0.0394 | 168.74 | 0.0379 | 0.039111 | 9.778e-07 | | 25 | 6 | Accept | 0.039 | 281.91 | 0.0379 | 0.039112 | 8.0694e-06 | | 26 | 6 | Accept | 0.8865 | 54.865 | 0.0379 | 0.038932 | 9.9885 | | 27 | 6 | Accept | 0.0381 | 300.7 | 0.0379 | 0.037996 | 2.6027e-05 | | 28 | 6 | Accept | 0.0406 | 54.611 | 0.0379 | 0.037996 | 1.6057e-09 | | 29 | 6 | Accept | 0.1272 | 76.648 | 0.0379 | 0.037997 | 0.012507 | | 30 | 6 | Accept | 0.0403 | 57.931 | 0.0379 | 0.037997 | 4.9907e-08 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 724.6036 seconds. Total objective function evaluation time: 3674.8899 Best observed feasible point: Lambda __________ 2.8439e-05 Observed objective function value = 0.0379 Estimated objective function value = 0.03801 Function evaluation time = 295.5515 Best estimated feasible point (according to models): Lambda __________ 2.6027e-05 Estimated objective function value = 0.037997 Estimated function evaluation time = 297.6756 Loss4 = 0.0440

基于1000提取功能的超额稀释溢出的分类器具有最低测试损耗尚未测试的最低测试丢失。

Mdl5 =黎加(Xtrain q“IterationLimit”, 400,“标准化”,真正的);NewX =变换(Mdl5 Xtrain);TestX =变换(Mdl5 Xtest);Cmdl = fitcecoc (NewX LabelTrain,“学习者”t......“OptimizeHyperparameters”,{“λ”},......“HyperparameterOptimizationOptions”、选择);Loss5 =损失(Cmdl TestX LabelTest)
警告:解算器LBFGS不能收敛到一个解。将目标函数复制到工人......对工人进行复制目标职能。|================================================================================================| | Iter | |活跃Eval客观客观| | | BestSoFar | BestSoFar |λ| | |工人结果| | |运行时| | (estim(观察) .) | | |================================================================================================| | 1 | 6 |最好的0.0764 | 46.206 | 0.0764 | 0.0764 | 8.4258e-09 | | 2 | 6 | Accept | 0.077 | 141.95 | 0.0764 | 0.0767 | 6.9536e-06 | | 3 | 6 | Accept | 0.0771 | 146.87 | 0.0764 | 0.076414 | 7.3378e-06 | | 4 | 6 | Best | 0.0709 | 182.51 | 0.0709 | 0.0709 | 0.48851 | | 5 | 6 | Accept | 0.0764 | 46.923 | 0.0709 | 0.070903 | 5.0695e-09 | | 6 | 6 | Best | 0.068 | 294.89 | 0.068 | 0.068004 | 0.0029652 | | 7 | 6 | Accept | 0.125 | 99.095 | 0.068 | 0.068001 | 9.9814 | | 8 | 6 | Accept | 0.0693 | 321.66 | 0.068 | 0.067999 | 0.0015167 | | 9 | 6 | Accept | 0.0882 | 138.03 | 0.068 | 0.068 | 1.8203 | | 10 | 6 | Accept | 0.0753 | 285.07 | 0.068 | 0.067991 | 0.00042423 | | 11 | 6 | Accept | 0.0764 | 47.704 | 0.068 | 0.067984 | 1.6326e-07 | | 12 | 6 | Accept | 0.0763 | 46.514 | 0.068 | 0.06798 | 1.0048e-09 | | 13 | 6 | Best | 0.0643 | 252.2 | 0.0643 | 0.0643 | 0.095965 | | 14 | 6 | Accept | 0.0766 | 168.37 | 0.0643 | 0.0643 | 9.1336e-07 | | 15 | 6 | Accept | 0.0753 | 153.29 | 0.0643 | 0.064301 | 4.8641e-05 | | 16 | 6 | Accept | 0.0662 | 256.65 | 0.0643 | 0.064298 | 0.0093576 | | 17 | 6 | Best | 0.0632 | 224.2 | 0.0632 | 0.063226 | 0.031314 | | 18 | 6 | Accept | 0.0673 | 219.59 | 0.0632 | 0.063201 | 0.20528 | | 19 | 6 | Accept | 0.0637 | 244.17 | 0.0632 | 0.063208 | 0.075001 | | 20 | 6 | Accept | 0.064 | 234.85 | 0.0632 | 0.06321 | 0.081232 | |================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | Lambda | | | workers | result | | runtime | (observed) | (estim.) | | |================================================================================================| | 21 | 6 | Accept | 0.0646 | 242.2 | 0.0632 | 0.063315 | 0.078081 | | 22 | 6 | Accept | 0.0633 | 217.97 | 0.0632 | 0.063233 | 0.039495 | | 23 | 6 | Accept | 0.0643 | 224.22 | 0.0632 | 0.063496 | 0.052107 | | 24 | 6 | Accept | 0.0761 | 45.102 | 0.0632 | 0.063509 | 4.3946e-08 | | 25 | 6 | Accept | 0.0645 | 221.24 | 0.0632 | 0.063778 | 0.044455 | | 26 | 6 | Accept | 0.0763 | 44.572 | 0.0632 | 0.063778 | 1.9139e-09 | | 27 | 6 | Accept | 0.0639 | 216.9 | 0.0632 | 0.063791 | 0.041759 | | 28 | 6 | Accept | 0.0766 | 45.609 | 0.0632 | 0.06379 | 2.0642e-08 | | 29 | 6 | Accept | 0.0765 | 121.35 | 0.0632 | 0.063789 | 3.5882e-07 | | 30 | 6 | Accept | 0.0636 | 215.47 | 0.0632 | 0.063755 | 0.038062 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 952.7987 seconds. Total objective function evaluation time: 5145.3787 Best observed feasible point: Lambda ________ 0.031314 Observed objective function value = 0.0632 Estimated objective function value = 0.063828 Function evaluation time = 224.2018 Best estimated feasible point (according to models): Lambda ________ 0.044455 Estimated objective function value = 0.063755 Estimated function evaluation time = 219.4845 Loss5 = 0.0748

基于1000个特征的RICA分类器的测试损失与基于200个特征的RICA分类器相似。

通过Using优化超参数bayesopt

特征提取函数具有以下优化参数:

  • 迭代限制

  • 功能,即黎加或者sparsefilt

  • 参数λ

  • 习得特征数

fitcecoc.正则化参数也影响学习分类器的准确性。也将该参数包含在超参数列表中。

要有效地搜索可用参数,请尝试bayesopt.使用下面的目标函数,其中包括从工作空间传递的参数。

功能target = filterica(x,Xtrain,Xtest,LabelTrain,LabelTest,winit) initW = winit(1:size(Xtrain,2),1:x.q);如果char (x.solver) = =“r”mdl = rica(xtrain,x.q,“λ”x.lambda,“IterationLimit”x.iterlim,......'InitialTransformweights'initW,“标准化”,真正的);其他的Mdl = sparsefilt (Xtrain x.q,“λ”x.lambda,“IterationLimit”x.iterlim,......'InitialTransformweights',initw);结束newx =变换(MDL,XTrain);Xtest TestX =变换(Mdl);t = templatelinear(“λ”x.lambdareg,'求解'“lbfgs”);Cmdl = fitcecoc (NewX LabelTrain,“学习者”t);目标=损失(Cmdl TestX LabelTest);

要清除变化源,请修复初始变换权重矩阵。

W = randn (1 e4, 1 e3);

为目标函数创建超参数。

iterlim = optimizableVariable (“iterlim”[5500],“类型”“整数”);λ= optimizableVariable (“λ”,[0,10]);求解器=优化不变('求解',{“r”“年代”},“类型”“分类”);QVAR =优化不变(“问”,[10,1000],“类型”“整数”);lambdareg = optimizableVariable (“lambdareg”(1 e-6, 1),“转换”“日志”);var = [iterlimλ,解算器,qvar lambdareg);

运行优化时不要出现内部优化未运行完成时出现的警告。运行60次迭代,而不是默认的30次,以使优化有更好的机会找到一个好的值。

警告(“关闭”的统计数据:classreg:学习:fsutils:解决:LBFGSUnableToConverge”);结果= Bayesopt(@(x)filterica(x,xtrain,xtest,labeltrain,labeltest,w),vars,......“UseParallel”,真的,“MaxObjectiveEvaluations”、60);警告(“上”的统计数据:classreg:学习:fsutils:解决:LBFGSUnableToConverge”);
将目标函数复制到工人......对工人进行复制目标职能。| ============================================================================================================================================================ ||磨练|活跃|eval |目标|目标|Bestsofar |Bestsofar | iterlim | lambda | solver | q | lambdareg | | | workers | result | | runtime | (observed) | (estim.) | | | | | | |============================================================================================================================================================| | 1 | 6 | Best | 0.16408 | 33.743 | 0.16408 | 0.16408 | 140 | 9.4661 | s | 98 | 0.0007106 | | 2 | 6 | Best | 0.079213 | 51.975 | 0.079213 | 0.09064 | 10 | 9.466 | r | 685 | 0.010462 | | 3 | 6 | Best | 0.074897 | 82.031 | 0.074897 | 0.074983 | 32 | 3.7554 | r | 689 | 0.13737 | | 4 | 6 | Accept | 0.07546 | 93.221 | 0.074897 | 0.075073 | 178 | 3.9741 | r | 196 | 0.1829 | | 5 | 6 | Accept | 0.13924 | 30.444 | 0.074897 | 0.074933 | 282 | 0.36123 | r | 33 | 0.99029 | | 6 | 6 | Accept | 0.083964 | 133 | 0.074897 | 0.074933 | 58 | 9.7653 | r | 685 | 0.0014623 | | 7 | 6 | Accept | 0.08128 | 33.609 | 0.074897 | 0.074957 | 8 | 5.6351 | r | 519 | 0.0065822 | | 8 | 6 | Accept | 0.090751 | 203.96 | 0.074897 | 0.074913 | 131 | 0.73308 | r | 577 | 2.1172e-05 | | 9 | 6 | Accept | 0.090001 | 172.38 | 0.074897 | 0.074904 | 146 | 8.1899 | r | 454 | 1.4417e-05 | | 10 | 6 | Accept | 0.080191 | 316.8 | 0.074897 | 0.074897 | 164 | 0.48783 | r | 727 | 0.004936 | | 11 | 6 | Best | 0.060472 | 40.777 | 0.060472 | 0.060731 | 5 | 2.3201 | s | 530 | 1.1957e-06 | | 12 | 6 | Accept | 0.079027 | 45.841 | 0.060472 | 0.060632 | 8 | 0.55541 | r | 696 | 0.030914 | | 13 | 6 | Accept | 0.074823 | 237.43 | 0.060472 | 0.06067 | 109 | 4.5352 | r | 781 | 0.12274 | | 14 | 6 | Accept | 0.84009 | 85.121 | 0.060472 | 0.060468 | 306 | 0.59533 | s | 148 | 0.89675 | | 15 | 6 | Accept | 0.15637 | 200.13 | 0.060472 | 0.060451 | 90 | 3.0192 | s | 999 | 0.0043768 | | 16 | 6 | Accept | 0.69006 | 14.273 | 0.060472 | 0.06047 | 6 | 9.4568 | s | 407 | 0.13833 | | 17 | 6 | Accept | 0.093035 | 205.83 | 0.060472 | 0.060469 | 263 | 2.3083 | r | 308 | 1.0016e-06 | | 18 | 6 | Accept | 0.18753 | 6.0238 | 0.060472 | 0.060527 | 36 | 9.806 | s | 24 | 8.3653e-06 | | 19 | 6 | Accept | 0.119 | 749.98 | 0.060472 | 0.060751 | 482 | 0.51927 | s | 818 | 1.5416e-06 | | 20 | 6 | Accept | 0.076414 | 751.21 | 0.060472 | 0.060754 | 387 | 9.9936 | r | 784 | 0.26786 | |============================================================================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | iterlim | lambda | solver | q | lambdareg | | | workers | result | | runtime | (observed) | (estim.) | | | | | | |============================================================================================================================================================| | 21 | 6 | Accept | 0.099332 | 7.2298 | 0.060472 | 0.060828 | 20 | 0.78894 | s | 49 | 1.0335e-06 | | 22 | 6 | Accept | 0.090139 | 7.9815 | 0.060472 | 0.060858 | 11 | 3.2973 | r | 88 | 2.7437e-06 | | 23 | 6 | Accept | 0.076696 | 323.64 | 0.060472 | 0.060872 | 120 | 1.9199 | r | 999 | 0.2537 | | 24 | 6 | Accept | 0.098003 | 50.544 | 0.060472 | 0.060876 | 492 | 1.7197 | r | 27 | 0.00020896 | | 25 | 6 | Accept | 0.10383 | 56.568 | 0.060472 | 0.06101 | 11 | 5.256 | s | 971 | 0.00054471 | | 26 | 6 | Accept | 0.14405 | 30.426 | 0.060472 | 0.060797 | 477 | 5.5475 | r | 12 | 0.022342 | | 27 | 6 | Accept | 0.09046 | 53.398 | 0.060472 | 0.060815 | 13 | 2.1216 | r | 986 | 1.1811e-06 | | 28 | 6 | Best | 0.051641 | 99.452 | 0.051641 | 0.051368 | 23 | 2.6976 | s | 985 | 1.0558e-06 | | 29 | 6 | Accept | 0.10016 | 6.4162 | 0.051641 | 0.051365 | 6 | 3.7223 | r | 69 | 9.2926e-05 | | 30 | 6 | Accept | 0.10943 | 40.676 | 0.051641 | 0.051391 | 488 | 5.2092 | r | 19 | 2.4162e-05 | | 31 | 6 | Accept | 0.086761 | 7.8419 | 0.051641 | 0.051393 | 24 | 6.5535 | r | 42 | 0.0013244 | | 32 | 6 | Best | 0.0504 | 96.816 | 0.0504 | 0.050526 | 14 | 9.929 | s | 1000 | 2.8809e-06 | | 33 | 6 | Accept | 0.088789 | 81.158 | 0.0504 | 0.050525 | 14 | 1.0441 | r | 927 | 0.00021061 | | 34 | 6 | Accept | 0.083083 | 887.17 | 0.0504 | 0.05052 | 351 | 6.8834 | r | 978 | 0.0026404 | | 35 | 6 | Best | 0.050023 | 99.493 | 0.050023 | 0.050372 | 19 | 9.9813 | s | 899 | 1.0257e-06 | | 36 | 6 | Accept | 0.053338 | 113.36 | 0.050023 | 0.050499 | 7 | 4.7855 | s | 984 | 1.8611e-06 | | 37 | 6 | Accept | 0.089024 | 70.047 | 0.050023 | 0.0505 | 15 | 8.8301 | r | 984 | 6.0636e-06 | | 38 | 6 | Accept | 0.052029 | 95.822 | 0.050023 | 0.050551 | 7 | 9.759 | s | 996 | 3.7871e-06 | | 39 | 6 | Accept | 0.085992 | 73.422 | 0.050023 | 0.050528 | 5 | 2.7837 | r | 968 | 0.004483 | | 40 | 6 | Accept | 0.091159 | 5.8348 | 0.050023 | 0.05052 | 15 | 8.7732 | r | 37 | 0.084632 | |============================================================================================================================================================| | Iter | Active | Eval | Objective | Objective | BestSoFar | BestSoFar | iterlim | lambda | solver | q | lambdareg | | | workers | result | | runtime | (observed) | (estim.) | | | | | | |============================================================================================================================================================| | 41 | 6 | Best | 0.046444 | 152.93 | 0.046444 | 0.047062 | 30 | 4.0843 | s | 997 | 7.279e-06 | | 42 | 6 | Accept | 0.052712 | 58.107 | 0.046444 | 0.04698 | 12 | 0.99592 | s | 652 | 1.0258e-06 | | 43 | 6 | Accept | 0.058005 | 91.928 | 0.046444 | 0.047263 | 10 | 5.511 | s | 1000 | 2.4589e-05 | | 44 | 6 | Accept | 0.055413 | 103.25 | 0.046444 | 0.047306 | 7 | 5.6791 | s | 953 | 1.4656e-06 | | 45 | 6 | Accept | 0.052517 | 96.201 | 0.046444 | 0.049604 | 10 | 5.9403 | s | 996 | 1.0525e-05 | | 46 | 6 | Accept | 0.089527 | 76.617 | 0.046444 | 0.046888 | 20 | 1.0744 | r | 965 | 0.96766 | | 47 | 6 | Accept | 0.050062 | 99.709 | 0.046444 | 0.046735 | 12 | 9.9236 | s | 975 | 4.5916e-06 | | 48 | 6 | Accept | 0.21166 | 90.117 | 0.046444 | 0.049716 | 495 | 1.1996 | s | 86 | 0.00022338 | | 49 | 6 | Accept | 0.054535 | 79.1 | 0.046444 | 0.046679 | 6 | 0.22929 | s | 967 | 7.6974e-06 | | 50 | 6 | Accept | 0.12385 | 964.74 | 0.046444 | 0.049963 | 474 | 4.7085 | s | 991 | 8.6984e-05 | | 51 | 6 | Accept | 0.052016 | 76.098 | 0.046444 | 0.049914 | 10 | 1.0798 | s | 922 | 1.133e-06 | | 52 | 6 | Accept | 0.048984 | 95.054 | 0.046444 | 0.049891 | 12 | 4.69 | s | 976 | 1.0189e-06 | | 53 | 6 | Accept | 0.1948 | 889.11 | 0.046444 | 0.047903 | 466 | 7.9582 | s | 986 | 0.0012319 | | 54 | 6 | Accept | 0.10652 | 5.076 | 0.046444 | 0.047961 | 10 | 5.9107 | r | 40 | 0.52677 | | 55 | 6 | Accept | 0.074194 | 319.41 | 0.046444 | 0.04981 | 130 | 2.6437 | s | 997 | 7.8756e-06 | | 56 | 6 | Accept | 0.1014 | 45.184 | 0.046444 | 0.049828 | 480 | 6.1835 | r | 24 | 2.0019e-06 | | 57 | 6 | Accept | 0.33214 | 3.1996 | 0.046444 | 0.049785 | 12 | 7.4538 | s | 13 | 0.016248 | | 58 | 6 | Accept | 0.054348 | 96.616 | 0.046444 | 0.050832 | 12 | 2.8605 | s | 987 | 4.7951e-06 | | 59 | 6 | Accept | 0.71471 | 3.0555 | 0.046444 | 0.050852 | 10 | 9.8909 | s | 24 | 0.21362 | | 60 | 6 | Accept | 0.074353 | 67.118 | 0.046444 | 0.05084 | 8 | 5.5275 | s | 986 | 8.9716e-05 | __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 60 reached. Total function evaluations: 60 Total elapsed time: 1921.1117 seconds. Total objective function evaluation time: 9107.7006 Best observed feasible point: iterlim lambda solver q lambdareg _______ ______ ______ ___ _________ 30 4.0843 s 997 7.279e-06 Observed objective function value = 0.046444 Estimated objective function value = 0.053743 Function evaluation time = 152.932 Best estimated feasible point (according to models): iterlim lambda solver q lambdareg _______ ______ ______ ___ _________ 10 1.0798 s 922 1.133e-06 Estimated objective function value = 0.05084 Estimated function evaluation time = 90.9315

由此产生的分类器没有比分类器更好(更低)损失sparsefilt有1000个功能,培训10个迭代。

查看最佳超参数的滤波器系数bayesopt成立。得到的图像显示提取的特征的形状。这些形状可识别为手写数字的部分。

Xtbl = results.XAtMinObjective;Q = Xtbl.q;initW = W(1:尺寸(Xtrain, 2), 1:问);如果char (Xtbl.solver) = =“r”Mdl =黎加(Xtrain Q“λ”,xtbl.lambda,“IterationLimit”,xtbl.iterlim,......'InitialTransformweights'initW,“标准化”,真正的);其他的Mdl = sparsefilt (Xtrain Q“λ”,xtbl.lambda,“IterationLimit”,xtbl.iterlim,......'InitialTransformweights',initw);结束但是= Mdl.TransformWeights;但是=重塑(Wts,[问]28日28日);(dx, dy, ~, ~) = (Wts)大小;Wvec = Wts(:,:,f);Wvec = Wvec (:);Wvec = (Wvec - min (Wvec)) / (max (Wvec) - min (Wvec));但是(::f) =重塑(Wvec, dx, dy);结束m =装天花板(sqrt (Q));n = m;img = 0 (m * dx, n * (dy);f = 1;i = 1: mj = 1: n如果(f < = Q) img((张)* dx + 1:我* dx, dy (j - 1) * + 1: j * dy:) =出世(::f);f = f + 1;结束结束结束imshow (img);
警告:解算器LBFGS不能收敛到一个解。

读取Mnist数据的代码

将数据读入工作区的函数代码如下:

功能[X,L] = processMNISTdata(imageFileName,labelFileName) [fileID,errmsg] = fopen(imageFileName, labelFileName)“r”'B');如果fileid <0错误(ERRMSG);结束%%先读这个神奇的数字。对于图像数据,这个数字是2051% 2049用于标签数据magicNum =从文件中读(文件标识,1'int32'0,'B');如果MagicNum == 2051 Fprintf('\ nREAD MNIST图像数据... \ n'结束%%%然后读取图像的数量,行数和列数numImages =从文件中读(文件标识,1'int32'0,'B');流('数据集中的图像数:%6d ... \ n', numImages);numRows =从文件中读(文件标识,1'int32'0,'B');numCols =从文件中读(文件标识,1'int32'0,'B');流(“每个图像是%2d × %2d像素……\n”numRows numCols);%%%读取图像数据X =从文件中读(inf文件标识,“无符号字符”);%%%将数据重塑为阵列xx =重塑(x,numcols,numrows,numimages);x = y yute(x,[2 1 3]);%%%然后将每个图像数据扁平化为1 × (numRows*numCols)向量,然后%(numrows * numcols)阵列中的%将所有图像数据存储为NUMIMAIM。X =重塑(X, numRows * numCols numImages) ';流(['图像数据被读取为一个维度矩阵:%6d by %4d…\n'......'读取图像数据结束。\n'),大小(X, 1),大小(X, 2));%%%关闭文件文件关闭(文件标识);%%%同样,读取标签数据。[文件标识,errmsg] = fopen (labelFileName,“r”'B');如果fileid <0错误(ERRMSG);结束magicNum =从文件中读(文件标识,1'int32'0,'B');如果MagicNum == 2049 FPRINTF('\ nread mnist标签数据... \ n'结束numitems = fread(fileid,1,'int32'0,'B');流('数据集中的标签数:%6d ... \ n', numItems);L =从文件中读(inf文件标识,“无符号字符”);流(['标签数据被读取到一个维度为:%6d by %2d…\n'......'读取标签数据结束。\n'),大小(L, 1),大小(L, 2));文件关闭(文件标识);

参考文献

Yann LeCun (Courant Institute, NYU)和Corinna Cortes(谷歌Labs, New York)拥有MNIST数据集的版权,该数据集是NIST原始数据集的衍生作品。MNIST数据集是在知识共享署名-共享相似3.0许可条款下提供的,https://creativecommons.org/licenses/by-sa/3.0/

另请参阅

|||

相关的例子

更多关于