MatlabDeepNetworkDesignerAPP搭建神经网络及相关函数是什么
本篇文章为大家展示了Matlab Deep Network Designer APP搭建神经网络及相关函数是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
目前成都创新互联已为上千的企业提供了网站建设、域名、网页空间、网站托管、服务器托管、企业网站设计、辽宁网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
1 APP的使用
(1)打开方式一
从Matlab工具栏APP处搜索Deep Network Designer点击打开,或者在命令行窗口输入命令:deepNetworkDesigner开启
(2)新建神经网络结构
拖动左侧的图标到中心工作区,然后点击连接图标
(3)使用现成的神经网络
举例使用alexnet,在窗口输入alexnet,提示没有安装的话,就点击红色中的附加资源管理器,点击安装就行。安装完成后,再次输入alexnet即可。然后再APP中点击导入,就会提示导入alexnet网络。
(4)检查网络结构是否正确
点击工具栏的分析,可以查看网络的结构,如果结构不对,会报错并红色的提示。
(5)生成代码代码
点击导出,选择导出生成代码。把layers的代码拷贝出来,这就是你网络结构的代码。
会生成实时脚本文件,layers就是我们搭建的神经网络,单独拷贝出来使用。
2 使用神经网络
2.1 简单例子
% 一个使用APP的Demo % 加载数据集 digitDatasetPath = fullfile(matlabroot,'toolbox','nnet', ... 'nndemos','nndatasets','DigitDataset'); imds = imageDatastore(digitDatasetPath, ... 'IncludeSubfolders',true, ... 'LabelSource','foldernames'); % 展示数据集 figure numImages = 10000; perm = randperm(numImages,20); for i = 1:20 subplot(4,5,i); imshow(imds.Files{perm(i)}); end % 划分数据集和测试集出来 numTrainingFiles = 750; [imdsTrain,imdsTest] = splitEachLabel(imds,numTrainingFiles,'randomize'); % 使用搭建的神经网络 layers = [ ... imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,'Stride',2) fullyConnectedLayer(10) softmaxLayer classificationLayer]; % 配置训练参数 options = trainingOptions('sgdm', ... 'MaxEpochs',20,... 'InitialLearnRate',1e-4, ... 'Verbose',false, ... 'Plots','training-progress'); % 训练神经网络 net = trainNetwork(imdsTrain,layers,options); % 使用神经网络,这是分类的例子。使用classify.搭配神经网络中的最后一层classificationLayer % 如果是回归的神经网络,则神经网络的最后一层是regressionLayer,搭配predict使用,就是替换classify为predict YPred = classify(net,imdsTest); YTest = imdsTest.Labels; accuracy = sum(YPred == YTest)/numel(YTest)
2.2 trainOptions
官方文档讲解
根据自己的训练需要,只选择需要的参数设定即可,不设定的就是执行默认值
options = TrainingOptionsSGDM with properties: Momentum: 0.9000 InitialLearnRate: 0.0100 % 初始学习率 LearnRateSchedule: 'piecewise' % 学习率周期 LearnRateDropFactor: 0.2000 % 学习率下降因子 LearnRateDropPeriod: 5 % 学习率下降周期 L2Regularization: 1.0000e-04 % L2正则化参数 GradientThresholdMethod: 'l2norm' GradientThreshold: Inf % 梯度阈值 MaxEpochs: 20 % 最大epochs MiniBatchSize: 64 % 最小batch大小 Verbose: 1 % 是否窗口打印训练进度 VerboseFrequency: 50 ValidationData: [] % 放入验证集数据和验证集标签 ValidationFrequency: 50 % 验证频率 ValidationPatience: Inf Shuffle: 'once' % 打乱训练集的次数 CheckpointPath: '' ExecutionEnvironment: 'auto' % 设置CPU或者GPU执行 WorkerLoad: [] OutputFcn: [] Plots: 'training-progress' % 是否显示训练可视化的过程图 SequenceLength: 'longest' SequencePaddingValue: 0 SequencePaddingDirection: 'right' DispatchInBackground: 0 ResetInputNormalization: 1 ``` ## 2.3 trainNetwork [官方文档讲解](https://www.mathworks.com/help/deeplearning/ref/trainnetwork.html) 简单的使用格式如下,其他格式参考官方文档讲解 ```matlab net = trainNetwork(X,Y,layers,options) % X是训练集的数据集,Y是训练集的标签集
2.4 predict和classify
这两个函数是用来调用神经网络模型的,用测试集去测试输出结果。predict函数搭配回归神经网络使用,就是神经网络的最后一层是regressionLayer,如2.1例子中42行就是替换classify为predict。classify函数搭配分类神经网络,就是神经网络中的最后一层是classificationLayer。
result = classify(net,testData) % 第一个参数是训练的网络模型 % 第二个参数是测试的数据 % result表示用神经网络处理TestData最终的输出结果
3 参数选择原则
(1)首先开发一个过拟合的模型
• 添加更多的层
• 让每一层变得更大
• 训练更多的轮次
(2)然后抑制过拟合
• dropout
• 正则化
• 图像增强
(3)再次调节超参数
• 学习速率
• 隐藏层单元数
• 训练轮次
超参数的选择是一个经验不断测试的结果,经典机器学习的方法,如特征工程、增加训练数据要做交叉验证。
4 构建网络的总原则
• 增大网络容量,直到过拟合
• 采取措施抑制过拟合
• 继续增大网络容量,直到过拟合
上述内容就是Matlab Deep Network Designer APP搭建神经网络及相关函数是什么,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注创新互联行业资讯频道。
当前文章:MatlabDeepNetworkDesignerAPP搭建神经网络及相关函数是什么
转载源于:http://ybzwz.com/article/psphhg.html