主要内容

创建一个分类深度学习实验

这个例子展示了如何培养深度学习网络分类利用实验管理器。在本例中,您训练两个网络分类的图像MathWorks商品分为五类。每个网络是使用三个算法训练。在每种情况下,一个混淆矩阵比较真实的类的一组验证图像类预测的训练网络。训练一个网络上的更多信息的图像分类,看看火车深入学习网络对新图像进行分类

这个实验需要深度学习工具箱™模型GoogLeNet网络万博1manbetx支持包。运行试验之前,安装这个包通过调用的支持万博1manbetxgooglenet功能和点击下载链接。

开放实验

首先,打开示例。实验管理器加载一个预配置实验的项目,你可以检查和运行。开放实验,实验的浏览器面板,双击实验的名称(ClassificationExperiment)。

内置训练实验由一个描述,hyperparameters表,设置函数,和一组度量函数对实验的结果进行评估。有关更多信息,请参见配置内置的训练实验

描述字段包含的文本描述的实验。对于这个例子,描述是:

商品图像分类使用:*一个未经训练的网络(默认)或pretrained网络培训(googlenet) *解决各种网络(个、rmsprop或亚当)

Hyperparameters部分指定策略(详尽的扫描)和hyperparameter值用于实验。当您运行实验,实验管理器使用每一列车网络的组合hyperparameter hyperparameter表中指定的值。这个示例使用两个hyperparameters:

  • 网络指定网络培训。选项包括“默认”(默认网络提供的实验模板图像分类)“googlenet”与修改(pretrained GoogLeNet网络层传输学习)。

  • 解算器表明该算法用于训练网络。选项包括“个”(随机梯度下降势头),“rmsprop”(均方根传播)“亚当”(自适应时刻估计)。关于这些算法的更多信息,请参阅随机梯度下降法

设置函数配置培训数据、网络体系结构和培训选择实验。setup函数的输入是一个结构从hyperparameter表与字段。setup函数返回三个输出,训练一个网络用于图像分类问题。在这个例子中,setup函数有三个部分。

  • 负荷训练数据定义图像包含训练和验证数据的数据存储。这个例子从文件加载图像MerchData.zip。这个小数据集包含75张图片MathWorks商品,属于五个不同的类。大小的图像是227 - 227 - 3。这个数据集的更多信息,请参阅图像数据集

文件名=“MerchData.zip”;dataFolder = fullfile (tempdir,“MerchData”);如果~存在(dataFolder“dir”解压缩(文件名,tempdir);结束
imdsTrain = imageDatastore (dataFolder,IncludeSubfolders = true,LabelSource =“foldernames”);
numTrainingFiles = 0.7;[imdsTrain, imdsValidation] = splitEachLabel (imdsTrain numTrainingFiles);
  • 定义网络体系结构定义了建筑的卷积神经网络深度学习分类。在这个例子中,网络训练的选择取决于hyperparameter的价值网络

开关params.Network情况下“默认”inputSize = (227 227 3);numClasses = 5;层= [imageInputLayer (inputSize) convolution2dLayer (20) batchNormalizationLayer reluLayer fullyConnectedLayer (numClasses) softmaxLayer classificationLayer);情况下“googlenet”inputSize = (224 224 3);numClasses = 5;imdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain);imdsValidation = augmentedImageDatastore (inputSize (1:2),imdsValidation);网= googlenet;层= layerGraph(净);newLearnableLayer = fullyConnectedLayer (numClasses,Name =“new_fc”,WeightLearnRateFactor = 10,BiasLearnRateFactor = 10);层= replaceLayer(层,“loss3-classifier”,newLearnableLayer);newClassLayer = classificationLayer (Name =“new_classoutput”);层= replaceLayer(层,“输出”,newClassLayer);否则错误(“未定义的网络选择。”);结束
  • 指定培训选项定义了一个trainingOptions实验对象。列车网络的例子8时代使用指定的算法解算器hyperparameter表中的条目。

选择= trainingOptions (params.Solver,MiniBatchSize = 10,MaxEpochs = 8,InitialLearnRate = 1的军医,洗牌=“every-epoch”,ValidationData = imdsValidation,ValidationFrequency = 5,Verbose = false);

检查设置功能,设置函数,点击编辑。setup函数MATLAB®编辑器中打开。此外,设置的代码出现在函数附录最后这个例子。

指标部分指定可选功能,评估实验的结果。这个例子不包括任何自定义度量函数。

运行实验

当您运行实验,实验经理列车网络设置函数定义的六倍。每个试验使用不同的组合hyperparameter值。默认情况下,实验管理器运行一个审判。如果你有并行计算工具箱™,你可以同时运行多个试验或卸载实验作为批处理作业在一个集群中。

  • 运行一个审判的一次实验,在实验管理器将来发布,在模式中,选择顺序并点击运行

  • 同时,运行多个试验模式中,选择同时并点击运行。如果没有当前并行池、实验管理器启动一个集群使用默认配置文件。实验管理器然后运行尽可能多的同时试验有工人在你平行池。为达到最佳效果,在你运行你的实验,开始与尽可能多的工人gpu并行池。有关更多信息,请参见并行使用实验管理器来训练网络GPU计算的需求(并行计算工具箱)

  • 将实验作为批处理作业,模式中,选择批处理顺序批处理同时,指定你集群池大小,然后单击运行。有关更多信息,请参见卸载实验作为集群的批处理作业

一个表的结果显示每个试验的准确性和损失。

显示培训策划和跟踪每个试验的进展在实验时,审查结果,点击培训策划

评估结果

找到最佳的实验结果,验证结果的准确性对表进行排序。

  1. 指出验证准确性列。

  2. 点击三角形图标。

  3. 选择按照降序排列

最高的试验验证准确性出现在顶部的结果表。

显示这个审判的混淆矩阵,选择结果表中的第一行,审查结果,点击验证数据

记录对你的实验的结果,添加一个注释。

  1. 在结果表中,右键单击验证准确性细胞最好的审判。

  2. 选择添加注释

  3. 注释窗格中,在文本框中输入你的观察。

有关更多信息,请参见排序、过滤和注释的实验结果

关闭实验

实验的浏览器窗格中,右键单击项目并选择的名称关闭项目。实验管理器关闭所有的实验和结果包含在项目中。

附录:设置功能

这个函数配置培训数据、网络体系结构和培训选择实验。

输入

  • 参数个数从实验管理器是一个结构字段hyperparameter表。

输出

  • imdsTrain是一个图像数据存储训练数据。

  • 是一个层图,定义了神经网络架构。

  • 选项是一个trainingOptions对象。

函数[imdsTrain层,选项]= ClassificationExperiment_setup1 (params)文件名=“MerchData.zip”;dataFolder = fullfile (tempdir,“MerchData”);如果~存在(dataFolder“dir”解压缩(文件名,tempdir);结束imdsTrain = imageDatastore (dataFolder,IncludeSubfolders = true,LabelSource =“foldernames”);numTrainingFiles = 0.7;[imdsTrain, imdsValidation] = splitEachLabel (imdsTrain numTrainingFiles);开关params.Network情况下“默认”inputSize = (227 227 3);numClasses = 5;层= [imageInputLayer (inputSize) convolution2dLayer (20) batchNormalizationLayer reluLayer fullyConnectedLayer (numClasses) softmaxLayer classificationLayer);情况下“googlenet”inputSize = (224 224 3);numClasses = 5;imdsTrain = augmentedImageDatastore (inputSize (1:2), imdsTrain);imdsValidation = augmentedImageDatastore (inputSize (1:2),imdsValidation);网= googlenet;层= layerGraph(净);newLearnableLayer = fullyConnectedLayer (numClasses,Name =“new_fc”,WeightLearnRateFactor = 10,BiasLearnRateFactor = 10);层= replaceLayer(层,“loss3-classifier”,newLearnableLayer);newClassLayer = classificationLayer (Name =“new_classoutput”);层= replaceLayer(层,“输出”,newClassLayer);否则错误(“未定义的网络选择。”);结束选择= trainingOptions (params.Solver,MiniBatchSize = 10,MaxEpochs = 8,InitialLearnRate = 1的军医,洗牌=“every-epoch”,ValidationData = imdsValidation,ValidationFrequency = 5,Verbose = false);结束

另请参阅

应用程序

功能

相关的话题