请写一个 matlab deep learning 工具箱的深度学习代码
由于深度学习在不同的应用领域有着不同的代码实现方式,这里提供一个简单的图像分类的例子,以展示 MATLAB Deep Learning Toolbox 的使用。
首先,需要加载数据集。这里使用 CIFAR-10 数据集,包含 50000 张 32x32 的彩色图像,共分为 10 个类别。
% 加载 CIFAR-10 数据集
[XTrain, YTrain, XTest, YTest] = getCIFAR10Data();
接着,需要构建深度神经网络模型。这里使用了一个简单的卷积神经网络(Convolutional Neural Network,CNN),包括两个卷积层、两个池化层和两个全连接层。
% 构建深度神经网络模型
layers = [
imageInputLayer([32 32 3])
convolution2dLayer(3, 32, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 64, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
fullyConnectedLayer(512)
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer
];
然后,需要设置训练选项。这里使用了随机梯度下降(Stochastic Gradient Descent,SGD)作为优化器,学习率为 0.001,动量为 0.9,批量大小为 128,训练 10 个 epoch。
% 设置训练选项
options = trainingOptions('sgdm', ...
'InitialLearnRate', 0.001, ...
'Momentum', 0.9, ...
'MiniBatchSize', 128, ...
'MaxEpochs', 10, ...
'Shuffle', 'every-epoch', ...
'Verbose', false, ...
'Plots', 'training-progress');
最后,使用训练数据和训练选项训练模型,并使用测试数据评估模型的性能。
% 训练深度神经网络模型
net = trainNetwork(XTrain, YTrain, layers, options);
% 使用测试数据评估模型性能
YPred = classify(net, XTest);
accuracy = sum(YPred == YTest) / numel(YTest);
fprintf('测试集准确率为 %.2f%%\n', accuracy * 100);
完整代码如下:
% 加载 CIFAR-10 数据集
[XTrain, YTrain, XTest, YTest] = getCIFAR10Data();
% 构建深度神经网络模型
layers = [
imageInputLayer([32 32 3])
convolution2dLayer(3, 32, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(3, 64, 'Padding', 'same')
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
fullyConnectedLayer(512)
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer
];
% 设置训练选项
options = trainingOptions('sgdm', ...
'InitialLearnRate', 0.001, ...
'Momentum', 0.9, ...
'MiniBatchSize', 128, ...
'MaxEpochs', 10, ...
'Shuffle', 'every-epoch', ...
'Verbose', false, ...
'Plots', 'training-progress');
% 训练深度神经网络模型
net = trainNetwork(XTrain, YTrain, layers, options);
% 使用测试数据评估模型性能
YPred = classify(net, XTest);
accuracy = sum(YPred == YTest) / numel(YTest);
fprintf('测试集准确率为 %.2f%%\n', accuracy * 100);
原文地址: https://www.cveoy.top/t/topic/FyS 著作权归作者所有。请勿转载和采集!