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图像,即使类别不全都包含相同数量的图像。

你可能感兴趣的:(Matlab深度学习基础笔记-3)