在此示例中,使用了 CIFAR-10 数据集,其中包含10个类别的60000个32x32彩色图像。首先加载和预处理数据,然后定义了一个简单的卷积神经网络模型。接下来,定义了训练选项,包括优化器、学习率、最大训练周期数等。然后,使用训练选项训练深度学习模型,并评估其在测试集上的性能。这是一个简单的图像分类示例,可以根据自己的数据和任务来调整模型结构和参数,并使用不同的数据集来进行训练和评估。
% 步骤1:准备数据
% 假设你有一个包含图像和标签的数据集,例如 CIFAR-10 数据集
% 步骤2:加载和预处理数据
[XTrain, YTrain, XTest, YTest] = loadData(); % 加载数据集
% 步骤3:定义深度学习模型
layers = [
imageInputLayer([32 32 3]) % 输入层,图像大小为32x32,RGB通道数为3
convolution2dLayer(3, 16, 'Padding', 'same') % 卷积层
batchNormalizationLayer % 批归一化层
reluLayer % ReLU激活函数层
maxPooling2dLayer(2, 'Stride', 2) % 最大池化层
convolution2dLayer(3, 32, 'Padding', 'same') % 卷积层
batchNormalizationLayer % 批归一化层
reluLayer % ReLU激活函数层
maxPooling2dLayer(2, 'Stride', 2) % 最大池化层
fullyConnectedLayer(10) % 全连接层,输出类别数为10
softmaxLayer % softmax激活函数层
classificationLayer]; % 分类层
% 步骤4:定义训练选项
options = trainingOptions('adam', ...
'InitialLearnRate', 0.001, ...
'MaxEpochs', 20, ...
'MiniBatchSize', 128, ...
'Shuffle', 'every-epoch', ...
'ValidationData', {XTest, YTest}, ...
'ValidationFrequency', 10, ...
'Verbose', false, ...
'Plots', 'training-progress');
% 步骤5:训练深度学习模型
net = trainNetwork(XTrain, YTrain, layers, options);
% 步骤6:评估模型性能
YPred = classify(net, XTest);
accuracy = sum(YPred == YTest) / numel(YTest);
disp(['测试集准确率:', num2str(accuracy)]);
% 辅助函数:加载数据集
function [XTrain, YTrain, XTest, YTest] = loadData()
% 从 CIFAR-10 数据集中加载数据
cifar10Data = load('cifar10.mat');
XTrain = cifar10Data.data_train;
YTrain = categorical(cifar10Data.labels_train);
XTest = cifar10Data.data_test;
YTest = categorical(cifar10Data.labels_test);
end