编写一个用于预测的卷积神经网络matlab代码
时间: 2023-09-27 17:12:44 浏览: 133
卷积神经网络的matlab程序
4星 · 用户满意度95%
以下是一个简单的用于图像分类的卷积神经网络(CNN)的 MATLAB 代码示例:
```matlab
% 加载数据集(示例为MNIST手写数字数据集)
data = load('mnist.mat');
X_train = data.train_X; % 训练集图像
y_train = data.train_y; % 训练集标签
X_test = data.test_X; % 测试集图像
y_test = data.test_y; % 测试集标签
% 数据预处理
X_train = double(X_train) / 255; % 归一化到0-1范围
X_test = double(X_test) / 255;
% 转换标签为独热编码
num_classes = 10;
Y_train = zeros(num_classes, size(X_train, 2));
for i = 1:size(X_train, 2)
Y_train(y_train(i) + 1, i) = 1;
end
% 构建CNN模型
layers = [
imageInputLayer([28 28 1]) % 输入层,图像尺寸为28x28,通道数为1
convolution2dLayer(3, 16, 'Padding', 'same') % 卷积层,使用3x3的卷积核,输出通道数为16
batchNormalizationLayer % 批归一化层
reluLayer % ReLU激活层
maxPooling2dLayer(2, 'Stride', 2) % 最大池化层,使用2x2的池化窗口,步长为2
convolution2dLayer(3, 32, 'Padding', 'same') % 卷积层,输出通道数为32
batchNormalizationLayer
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
fullyConnectedLayer(64) % 全连接层,输出节点数为64
reluLayer
fullyConnectedLayer(num_classes) % 输出层,输出节点数为类别数
softmaxLayer % Softmax层
classificationLayer % 分类层
];
% 设置训练选项
options = trainingOptions('adam', ...
'InitialLearnRate', 0.001, ...
'MaxEpochs', 10, ...
'MiniBatchSize', 128, ...
'ValidationData', {X_test, categorical(y_test)}, ...
'Verbose', false, ...
'Plots', 'training-progress');
% 训练模型
net = trainNetwork(X_train, categorical(y_train), layers, options);
% 进行预测
Y_pred = classify(net, X_test);
accuracy = sum(Y_pred == categorical(y_test)) / numel(y_test);
fprintf('准确率:%.2f%%\n', accuracy * 100);
```
这个示例代码展示了如何使用 MATLAB 的深度学习工具箱构建一个简单的 CNN 模型,并在 MNIST 数据集上进行训练和预测。请注意,这只是一个基本的示例,你可能需要根据你的数据集和具体需求进行适当的修改和调整。
阅读全文