创建一个分类深度学习实验
这个例子展示了如何培养深度学习网络分类利用实验管理器。在本例中,您训练两个网络分类的图像MathWorks商品分为五类。每个网络是使用三个算法训练。在每种情况下,一个混淆矩阵比较真实的类的一组验证图像类预测的训练网络。训练一个网络上的更多信息的图像分类,看看火车深入学习网络对新图像进行分类。
这个实验需要深度学习工具箱™模型GoogLeNet网络万博1manbetx支持包。运行试验之前,安装这个包通过调用的支持万博1manbetxgooglenet
功能和点击下载链接。
开放实验
首先,打开示例。实验管理器加载一个预配置实验的项目,你可以检查和运行。开放实验,实验的浏览器面板,双击ClassificationExperiment
。
内置训练实验由一个描述,hyperparameters表,设置函数,和一组度量函数对实验的结果进行评估。有关更多信息,请参见配置内置的训练实验。
的描述字段包含的文本描述的实验。对于这个例子,描述是:
商品图像分类使用:*一个未经训练的网络(默认)或pretrained网络培训(googlenet) *解决各种网络(个、rmsprop或亚当)
的Hyperparameters节指定策略和hyperparameter值用于实验。当您运行实验,实验管理器使用每一列车网络的组合hyperparameter hyperparameter表中指定的值。这个示例使用两个hyperparameters:
网络
指定网络培训。选项包括“默认”
(默认网络提供的实验模板图像分类)“googlenet”
与修改(pretrained GoogLeNet网络层传输学习)。解算器
表明该算法用于训练网络。选项包括“个”
(随机梯度下降势头),“rmsprop”
(均方根传播)“亚当”
(自适应时刻估计)。关于这些算法的更多信息,请参阅随机梯度下降法。
的设置函数部分指定配置训练数据的功能,网络体系结构,实验和培训选项。在MATLAB®编辑器打开这个功能,点击编辑。函数的代码也出现在设置函数。setup函数的输入是一个结构从hyperparameter表与字段。函数返回三个输出,训练一个网络用于图像分类问题。在这个例子中,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);
的指标部分指定可选功能,评估实验的结果。这个例子不包括任何自定义度量函数。
运行实验
当您运行实验,实验经理列车网络设置函数定义的六倍。每个试验使用不同的组合hyperparameter值。默认情况下,实验管理器运行一个审判。如果你有并行计算工具箱™,你可以同时运行多个试验或卸载实验作为批处理作业在集群:
运行一个审判的一次实验,在实验管理器将来发布,在模式中,选择
顺序
并点击运行。同时,运行多个试验模式中,选择
同时
并点击运行。如果没有当前并行池、实验管理器启动一个集群使用默认配置文件。实验管理器然后运行尽可能多的同时试验有工人在你平行池。为达到最佳效果,在你运行你的实验,开始与尽可能多的工人gpu并行池。有关更多信息,请参见并行使用实验管理器来训练网络和GPU计算的需求(并行计算工具箱)。将实验作为批处理作业,模式中,选择
批处理顺序
或批处理同时
,指定你集群和池大小,然后单击运行。有关更多信息,请参见卸载实验作为集群的批处理作业。
一个表的结果显示每个试验的准确性和损失。
显示培训策划和跟踪每个试验的进展在实验时,审查结果,点击培训策划。
评估结果
找到最佳的实验结果,验证结果的准确性对表进行排序。
指出验证准确性列。
点击三角形图标。
选择按照降序排列。
最高的试验验证准确性出现在顶部的结果表。
显示这个审判的混淆矩阵,选择结果表中的第一行,审查结果,点击验证数据。
记录对你的实验的结果,添加一个注释。
在结果表中,右键单击验证准确性细胞最好的审判。
选择添加注释。
在注释窗格中,在文本框中输入你的观察。
有关更多信息,请参见排序、过滤和注释的实验结果。
关闭实验
在实验的浏览器窗格中,右键单击项目并选择的名称关闭项目。实验管理器关闭所有的实验和结果包含在项目中。
设置函数
这个函数配置培训数据、网络体系结构和培训选择实验。这个函数的输入是一个结构从hyperparameter表与字段。函数返回三个输出,训练一个网络用于图像分类问题。
函数[imdsTrain层,选项]= ClassificationExperiment_setup (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);
结束