这个例子说明了如何微调预训练GoogLeNet网络图像的新的集合进行分类。这个过程被称为转移学习,通常比培养一个新的网络,因为你可以申请学特性,使用训练图像的数少的新任务,更快,更容易。要准备迁移学习交互的网络,使用深层网络设计者。
在工作区中,解压缩数据。
解压('MerchData.zip');
打开深度网络设计器。
深度网络设计师
从Deep network Designer起始页选择一个预先训练好的GoogLeNet网络来加载它。如果需要下载网络,请单击安装在资源管理器上添加链接。
Deep Network Designer显示整个网络的放大视图。探索网络情节。要使用鼠标放大,请使用Ctrl键+滚轮。
要将数据加载到Deep Network Designer,请在数据选项卡,单击导入数据.将打开导入数据对话框。
在里面数据源列表,选择夹. 点击浏览并选择提取的MerchData文件夹。
该对话框还允许您从应用程序内分裂验证数据。将数据分成70%的训练数据,30%的验证数据。
指定要对训练图像执行的增强操作。对于本例,在x轴上应用随机反射、从范围[-90,90]度的随机旋转和从范围[1,2]的随机重缩放。
点击进口以将数据导入到深层网络设计者。
Deep Network Designer在训练期间调整图像大小以匹配网络输入大小。要查看网络输入大小,请在设计师窗格中,单击图像输入层
. 此网络的输入大小为224 x 224。
使用Deep Network Designer,您可以在数据窗格。你可以看到,在这个例子中,在数据集五类。
为了重新训练一个预先训练好的网络来对新的图像进行分类,用适应新数据集的新层替换最后的层。
在里面设计师窗格中,将一个新的完全连接层
来自图层库在画布上。套输出大小
对于新数据中的类数,在本例中,5个
.
编辑学习速率以在新层中比在传输层中更快地学习。套加权平均系数
和比亚斯学习率因子
到10。删除最后一个完全连接的层并连接新层。
更换输出层。滚动到年底图层库并拖动一个新的分类层
在画布上。删除原件输出
层和连接新层代替。
为了确保您编辑的网络是准备训练,点击分析,并确保深学习网络分析报告零次失误。
要使用默认设置训练网络,请在培训选项卡,单击火车.
如果您想更好地控制培训,请单击培训选项然后选择要训练的设置。默认的训练选项更适合于大型数据集。对于小数据集,使用较小的值MiniBatchSize
和验证频率
.有关选择培训选项的详细信息,请参阅trainingOptions
.
在本例中,setInitialLearnRate
到0.0001
,验证频率
到5个
和MaxEpochs
到8个。
由于有55层的意见,集MiniBatchSize
以11均匀地分割训练数据和保证整个数据集的每个历元期间使用。
要使用指定的培训选项培训网络,请单击关闭然后点击火车.
Deep Network Designer允许您可视化和监视培训进度。如果需要,您可以编辑培训选项并重新培训网络。
要导出培训结果,请在培训选项卡,选择导出>导出训练的网络和结果. Deep Network Designer将经过训练的网络导出为变量trainedNetwork_1
以训练信息为变量trainInfoStruct_1
.
您还可以生成MATLAB代码,该代码将重新创建网络和使用的训练选项。上培训选项卡,选择导出>生成训练代码.
选择一个新的图像利用训练好的网络进行分类。
I=读("merchdata测试.jpg");
调整测试图像以匹配网络的输入大小。
I = imresize(I,[224 224]);
利用训练好的网络对测试图像进行分类。
[YPred,probs]=分类(trainedNetwork_1,I);imshow(I)label=YPred;title(string(label)+“”+ num2str(100 *最大(probs),3)+"%");
有关更多信息,包括有关其他预训练网络的信息,请参见深层网络设计师.