Matlab深度学习基础笔记-3

笔记来源于matlab官网,不足之处还请提出.。


2 transfer learning


要执行迁移学习,您需要创建三个组件:

1. 代表网络体系结构的一系列图层。 对于迁移学习,这是通过修改先前存在的网络(如AlexNet)创建的。

2. 已知标签的图像可用作训练数据。 这通常作为数据存储提供。

3. 包含控制训练算法行为的选项的变量。

这三个组件作为trainNetwork功能的输入提供,它将经过训练的网络作为输出返回。

您应该测试新接受训练的网络的性能。 如果不够,通常你应该尝试调整一些训练选项并重新训练。


2.1数据准备



训练所要的标签可以存储在Labels属性中,默认为空,通过指定‘LabelSource'选项自动确认文件夹名称中的标签。重新创建数据存储区flwrds到存储在变量中的文件夹路径的子文件夹中的所有图像pathToImages(为指定的文件夹,已经存在工作区中),使用文件夹名称作为图像标签:

flwrds = imageDatastore(pathToImages,'IncludeSubfolders',true,'LabelSource','foldernames')



通过Labels属性来提取标签:

                                              flowernames = flwrds.Labels;



可以使用splitEachLabel函数将数据存储区中的图像分成两个单独的数据存储区。

                                       [ds1 ,ds2 ] = splitEachLabel(imds , p);

比例p(0到1之间的一个值)表示imds应该包含来自其中的每个标签的图像的比例ds1,剩下的文件被分配给ds2,如将flwrds中60%分配给flwrTrain,剩下个40%分配给flwrTest:

                                 [flwrTrain , flwrTest] = splitEachLabel(flwrds , 0.6);


splictEachLabel默认是按顺序划分的,可以添加选项‘randomized'来进行随机划分:

                      [flwrTrain,flwrTest] = splitEachLabel(flwrds,0.8,'randomized');



当p值为0到1时,它被解释为一个比例。然后分割图像,以便每个标签按比例分割。您也可以指定要从每个要分配的标签中获取的确切数量的文件ds1:

                                        [ds1 , ds2 ] =splitEachLabel(imds , n);

这确保了每个标签都ds1具有n图像,即使类别不全都包含相同数量的图像。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 写这些的时候,转眼间已经是2017年最后一天的最后半个小时…2017年23:29分 刚在工作群里面枪玩红包雨的之后...
    刘梦影阅读 219评论 0 0
  • 实现原理 初始化 进程启动流程简述 客户端进程启动 -> ActivityThread#main -> Activ...
    HelloCsl阅读 900评论 0 8
  • 2014年,期待最高的两部电影,一是韩寒的《后会无期》,二便是姜文的《一步之遥》。极具韩寒风格的《后会无期》取得了...
    戒嗔阅读 410评论 0 1