创建一个基于深度神经网络(DNN)的模型是一个很好的方式来理解神经网络的工作原理。以下是一个使用 MATLAB 创建简单 DNN 的基本步骤。这个例子将创建一个用于分类的基本网络,比如区分数字图像(类似于 MNIST 数据集中的任务)。
步骤 1: 准备数据集
首先,你需要一个数据集。MATLAB 提供了一些内置的数据集,例如 digitDatasetPath = fullfile(matlabroot,'toolbox','nnet','nndemos','nndatasets','DigitDataset');
这个路径下的数字数据集。
digitData = imageDatastore(digitDatasetPath,...
'IncludeSubfolders',true,'LabelSource','foldernames');
步骤 2: 分割数据集
将数据集分为训练集和测试集。
[trainingImages, testImages] = splitEachLabel(digitData,0.8,'randomize');
步骤 3: 定义网络架构
定义一个简单的网络架构。例如,一个具有几个全连接层的小型网络。
layers = [
imageInputLayer([28 28 1])
fullyConnectedLayer(100)
reluLayer
fullyConnectedLayer(50)
reluLayer
fullyConnectedLayer(10)
softmaxLayer
classificationLayer];
步骤 4: 指定训练选项
设置训练的参数,比如迭代次数、学习率等。
options = trainingOptions('sgdm',...
'MaxEpochs',20,...
'InitialLearnRate',1e-4,...
'Verbose',false,...
'Plots','training-progress');
步骤 5: 训练网络
使用准备好的数据和定义的架构训练网络。
net = trainNetwork(trainingImages,layers,options);
步骤 6: 评估网络
使用测试集评估网络性能。
predictedLabels = classify(net,testImages);
accuracy = mean(predictedLabels == testImages.Labels);
这个例子是非常基础的。在实际应用中,你可能需要调整网络架构、增加层的复杂性、调整训练参数等来提高模型的性能。MATLAB 提供了丰富的工具和函数来支持这些高级操作。