写一个matlab的基于卷积神经网络的数据分类预测
时间: 2023-10-18 18:10:10 浏览: 107
下面是一个简单的基于卷积神经网络的数据分类预测的 MATLAB 代码示例:
```matlab
% 准备数据
load mnist_train_small
% 将图像数据转换为二维矩阵
data = reshape(X', [28, 28, 1, size(X, 1)]);
% 将标签转换为 one-hot 编码
labels = zeros(size(y, 1), 10);
for i = 1:size(y, 1)
labels(i, y(i)+1) = 1;
end
% 构建卷积神经网络
layers = [
imageInputLayer([28 28 1])
convolution2dLayer(5, 20)
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
convolution2dLayer(5, 50)
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
fullyConnectedLayer(500)
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];
% 设置训练选项
options = trainingOptions('sgdm', ...
'MaxEpochs', 20, ...
'ValidationData', {reshape(Xv', [28, 28, 1, size(Xv, 1)]), categorical(yv)}, ...
'Plots', 'training-progress');
% 训练卷积神经网络
net = trainNetwork(data, categorical(y), layers, options);
% 使用训练好的卷积神经网络进行预测
load mnist_test_small
test_data = reshape(X', [28, 28, 1, size(X, 1)]);
predictions = classify(net, test_data);
accuracy = sum(predictions == categorical(y)) / numel(y);
disp(['Test accuracy: ' num2str(accuracy)]);
```
在这个示例中,我们使用了 MNIST 数据集进行训练和测试。首先,我们将图像数据转换为二维矩阵,并将标签转换为 one-hot 编码。然后,我们构建了一个简单的卷积神经网络,包含两个卷积层和两个全连接层。接下来,我们设置了训练选项,并使用 `trainNetwork` 函数训练了卷积神经网络。最后,我们使用训练好的卷积神经网络对测试数据进行预测,并计算了预测准确率。
阅读全文