3个核心功能:NHSE如何彻底改变你的动森游戏体验
2026/6/2 15:45:29
MATLAB 提供了一个非常适合入门的图像分类数据集:手写数字 (digitDataset)。
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos','nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); countEachLabel(imds)这是一个0–9 十类的图片数据集
每张图片为28×28 的灰度图
全部图片已按分类存放,不需要你自己整理
[imdsTrain, imdsTest] = splitEachLabel(imds, 0.7, 'randomized');这行代码说明:
70% 用于训练
30% 用于测试
自动随机打乱
MATLAB 提供了高层封装,不用写算子、不用写卷积代码。
layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,8,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,16,'Padding','same') batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer ];网络说明:
2 个卷积模块(Conv + BN + ReLU)
1 个最大池化层
最终用fullyConnectedLayer(10)输出 10 类
适合入门,速度快、准确率高。
options = trainingOptions('sgdm', ... 'InitialLearnRate',0.01, ... 'MaxEpochs',4, ... 'MiniBatchSize',64, ... 'Plots','training-progress', ... 'Verbose',false);解释一下:
SGDM:常用优化算法
MaxEpochs=4:只训练 4 轮,速度极快
Plots='training-progress':自动生成训练曲线
net = trainNetwork(imdsTrain, layers, options);只要写这一行,MATLAB 会自动完成:
前向传播
反向传播
梯度更新
可视化曲线
GPU 自动加速(如果你有 GPU)
真正做到10 分钟跑出结果。
YPred = classify(net, imdsTest); YTest = imdsTest.Labels; accuracy = sum(YPred == YTest) / numel(YTest); disp("测试集准确率:" + accuracy);一般来说,这个小网络在该数据集上能达到:
👉97% 左右准确率
你会看到:
图像显示 + 自动识别结果
真正做到了 “像调用一个函数一样实现 AI”。
digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos','nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath,'IncludeSubfolders',true,'LabelSource','foldernames'); [imdsTrain, imdsTest] = splitEachLabel(imds,0.7,'randomized'); layers = [ imageInputLayer([28 28 1]) convolution2dLayer(3,8,'Padding','same') batchNormalizationLayer reluLayer maxPooling2dLayer(2,'Stride',2) convolution2dLayer(3,16,'Padding','same') batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer ]; options = trainingOptions('sgdm', ... 'InitialLearnRate',0.01, ... 'MaxEpochs',4, ... 'MiniBatchSize',64, ... 'Plots','training-progress', ... 'Verbose',false); net = trainNetwork(imdsTrain, layers, options); YPred = classify(net, imdsTest); YTest = imdsTest.Labels; accuracy = sum(YPred == YTest)/numel(YTest); disp("测试集准确率:" + accuracy); img = readimage(imdsTest, 1); imshow(img) label = classify(net,img); title("预测结果:" + string(label))无需处理复杂的数据加载
无需写神经网络底层代码
可视化训练曲线自动生成
GPU 自动识别与加速
内置大量示例数据集