matlab深度学习卷积神经网络图像分类预测代码
时间: 2023-09-14 16:07:43 浏览: 58
以下是一个简单的 MATLAB 深度学习卷积神经网络图像分类预测代码示例,使用了 CIFAR-10 数据集:
1. 加载数据集
```matlab
load('cifar10testdata.mat'); % 加载测试数据
load('cifar10traindata.mat'); % 加载训练数据
% 将图像数据转换为 double 类型
test_images = double(reshape(test_images, [32 32 3 size(test_images, 1)]));
train_images = double(reshape(train_images, [32 32 3 size(train_images, 1)]));
% 将标签转换为 categorical 类型
test_labels = categorical(test_labels);
train_labels = categorical(train_labels);
```
2. 定义网络架构
```matlab
layers = [
imageInputLayer([32 32 3])
convolution2dLayer(5, 32, 'Padding', 2)
batchNormalizationLayer
reluLayer
maxPooling2dLayer(3, 'Stride', 2)
convolution2dLayer(5, 64, 'Padding', 2)
batchNormalizationLayer
reluLayer
maxPooling2dLayer(3, 'Stride', 2)
convolution2dLayer(5, 128, 'Padding', 2)
batchNormalizationLayer
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer
];
```
3. 设置训练选项
```matlab
options = trainingOptions('adam', ...
'InitialLearnRate', 0.001, ...
'MaxEpochs', 20, ...
'MiniBatchSize', 128, ...
'Shuffle', 'every-epoch', ...
'Plots', 'training-progress', ...
'Verbose', false);
```
4. 训练网络
```matlab
net = trainNetwork(train_images, train_labels, layers, options);
```
5. 预测测试集
```matlab
predicted_labels = classify(net, test_images);
```
6. 计算准确率
```matlab
accuracy = sum(predicted_labels == test_labels) / numel(test_labels);
fprintf('准确率:%0.2f%%\n', accuracy * 100);
```