此示例显示了如何使用转移学习来重新撤销普雷克雷斯Zenet,普里雷卷积神经网络,分类一组新的图像。尝试此示例以查看在Matlab®中开始使用深度学习是多么简单。
转移学习通常用于深入学习应用。您可以拍摄备用网络并将其用作学习新任务的起点。微调具有传输学习的网络通常比训练网络从头开始随机初始化的权重更快更容易。您可以使用较少数量的培训图像快速将学习功能转移到新任务。
在工作空间中,提取MathWorks Merch数据集。这是一个包含75张MathWorks商品图像的小数据集,属于五个不同的类(帽那立方体那打牌那螺丝刀,火炬).
解压缩(“MerchData.zip”);
打开深度网络设计师。
DeepNetWorkDesigner.
选择挤压从掠夺网络列表中,单击打开.
深度网络设计器显示整个网络的缩小视图。
探索网络情节。要用鼠标放大,请使用Ctrl.+滚轮。要平移,请使用箭头键,或按住向下滚轮并拖动鼠标。选择一个图层以查看其属性。取消选择所有层以查看网络摘要特性窗格。
将数据加载到深网络设计师身上数据选项卡,单击导入数据>导入图像数据.将打开“导入图像数据”对话框。
在数据源列表,选择文件夹.点击浏览并选择提取的Merchdata文件夹。
将数据划分为70%的培训数据和30%的验证数据。
指定增强操作以在培训图像上执行。数据增强有助于防止网络过度接收和记忆培训图像的确切细节。对于该示例,在X轴上应用随机反射,从范围[-90,90]度的随机旋转,以及从范围[1,2]的随机重新扫描。
点击进口将数据导入深度网络设计器。
为了重新训练SqueezeNet对新图像进行分类,将最后一个二维卷积层替换为网络的最终分类层。在SqueezeNet中,这些图层都有名称'conv10'
和'classificationlayer_predictions'
, 分别。
在这一点设计师窗格,拖动一个新的convolution2dLayer
到画布上。为了匹配原始卷积层,设置FilterSize
到1,1
.编辑NumFilters
为新数据中的类数,在本例中,5.
.
更改学习率,使学习在新图层中比设置在传输的层中更快举重
和Biaslearnratefactor.
到10.
.
删除最后2-D卷积层并改为连接新图层。
替换输出层。滚动到末尾图书馆库并拖动一个新的分类层
到画布上。删除原来的输出层,并在其位置连接你的新层。
要选择培训选项,请选择训练标签并单击培训方案.将初始学习率设置为较小的值,以降低传输层的学习速度。在前面的步骤中,您增加了2d卷积层的学习率因子,以加速新的最终层中的学习。这种学习率设置的组合只会导致在新层中学习快,而在其他层中学习慢。
对于此示例,设置InitialLearnRate到0.0001.
那验证频繁到5.
那MaxEpochs到8.
.因为有55个观察,设定MiniBatchSize到11.
均匀划分训练数据,保证每个epoch使用整个训练集。
要使用指定的培训选项培训网络,请单击关然后点击火车.
深度网络设计器允许您可视化和监控培训进度。如果需要,您可以编辑培训选项并对网络进行再培训。
从培训导出结果,在训练选项卡上,选择出口>输出训练有素的网络和结果.深网络设计器将培训的网络导出为变量trainedNetwork_1
训练信息作为变量trainInfoStruct_1
.
您还可以生成MATLAB代码,该代码重新创建网络和使用的培训选项。在这一点训练选项卡上,选择出口>生成培训代码.检查MATLAB代码以了解如何以编程方式准备培训数据,创建网络架构和培训网络。
加载新图像以使用培训的网络对进行分类。
我= imread(“merchdattest.jpg”);
调整测试图像的大小以匹配网络输入的大小。
i = imresize(i,[227 227]);
使用培训的网络对测试图像进行分类。
[ypred,probs] =分类(troutahynetwork_1,i);imshow(i)标签= ypred;标题(字符串(标签)+”、“+ num2str(100 *马克斯(聚合氯化铝),3)+“%”);
[1]想象成.http://www.image-net.org
[2] Iandola,Forrest N.,Song Han,Matthew W. Moskewicz,Khalid Ashraf,William J. Dally和Kurt Keutzer。“Scrizzenet:AlexNet-level精度,参数少50倍和<0.5 MB型号。”预印刷品,2016年11月4日提交。https://arxiv.org/abs/1602.07360。
福雷斯特·伊安多拉“SqueezeNet。”https://github.com/forresti/SqueezeNet。
深层网络设计师|挤压
|trainingOptions
|Trainnetwork.