MATLAB与人工智能:深度学习实战入门

摘要: 随着Deep Learning Toolbox的成熟,MATLAB已成为一个强大的AI开发平台。本文将通过一个图像分类的实例,引导读者快速上手在MATLAB中构建和训练一个简单的卷积神经网络。

人工智能,特别是深度学习,正在重塑各行各业。MATLAB通过其Deep Learning Toolbox,将复杂的深度学习流程封装成简单易用的函数,降低了入门门槛。

1. 数据准备与预处理
数据是AI模型的燃料。MATLAB支持从磁盘、数据库或直接通过网络摄像头采集数据。

 

% 加载经典的手写数字数据集
digitDatasetPath = fullfile(matlabroot, 'toolbox', 'nnet', 'nndemos', ...
    'nndatasets', 'DigitDataset');
imds = imageDatastore(digitDatasetPath, ...
    'IncludeSubfolders', true, ...
    'LabelSource', 'foldernames');

% 划分数据集:70%训练,30%测试
[imdsTrain, imdsTest] = splitEachLabel(imds, 0.7, 'randomized');

% 查看数据集信息
countEachLabel(imdsTrain)

2. 定义网络架构
你可以使用MATLAB预训练的模型(如GoogLeNet, ResNet)进行迁移学习,也可以从头开始定义自己的网络。

 

% 定义一个简单的卷积神经网络(CNN)用于手写数字识别
layers = [
    imageInputLayer([28 28 1]) % 输入层,28x28的灰度图像

    convolution2dLayer(3, 8, 'Padding', 'same') % 卷积层1
    batchNormalizationLayer
    reluLayer

    maxPooling2dLayer(2, 'Stride', 2) % 池化层1

    convolution2dLayer(3, 16, 'Padding', 'same') % 卷积层2
    batchNormalizationLayer
    reluLayer

    maxPooling2dLayer(2, 'Stride', 2) % 池化层2

    fullyConnectedLayer(10) % 全连接层,10个输出对应0-9数字
    softmaxLayer
    classificationLayer];

3. 训练模型
使用trainingOptions配置训练参数,然后用trainNetwork开始训练。

 

% 设置训练选项
options = trainingOptions('sgdm', ...
    'InitialLearnRate', 0.01, ...
    'MaxEpochs', 10, ...
    'Shuffle', 'every-epoch', ...
    'ValidationData', imdsTest, ...
    'ValidationFrequency', 30, ...
    'Verbose', false, ...
    'Plots', 'training-progress'); % 开启训练进度图

% 开始训练网络
net = trainNetwork(imdsTrain, layers, options);

4. 评估与预测
训练完成后,使用测试集评估模型性能,并对新数据进行预测。

 

% 在测试集上评估精度
YPred = classify(net, imdsTest);
YTest = imdsTest.Labels;
accuracy = sum(YPred == YTest) / numel(YTest);
fprintf('测试集准确率: %.2f%%\n', accuracy * 100);

% 混淆矩阵可视化
confusionchart(YTest, YPred);

结论: MATLAB提供了一个集成化的环境,使得数据加载、网络设计、训练、评估和部署整个深度学习流程变得异常流畅。即使是初学者,也能在短时间内构建出可用的AI模型,为更复杂的研究和应用打下坚实基础。

Logo

更多推荐