导入数据到深度网络设计器
中导入和可视化训练和验证数据深度网络设计器.使用这个应用程序,你可以:
有关可用于开始深度学习的数据集的更多信息,请参见用于深度学习的数据集.有关为深度学习应用程序构造和使用数据存储对象的更多信息,请参见用于深度学习的数据存储.
导入数据
在深度网络设计器中,可以从图像数据存储或包含来自每个类的图像子文件夹的文件夹中导入图像分类数据。控件使用的任何数据存储对象也可以导入和训练trainNetwork
函数。根据所使用的数据存储的类型选择导入方法。
进口ImageDatastore 对象 |
导入任何其他数据存储对象(不推荐)ImageDatastore ) |
---|---|
选择导入数据>导入图像数据. |
选择导入数据>导入数据存储. |
导入之后,Deep Network Designer提供了导入数据的预览,这样您就可以在培训之前检查数据是否符合预期。对于图像分类数据,深度网络设计器还显示类标签的直方图和从导入数据中随机选择的图像。您还可以选择查看属于特定类的随机图像。
按任务导入数据
任务 | 数据类型 | 数据导入方式 | 可视化例子 |
---|---|---|---|
图像分类 | 文件夹,其子文件夹包含每个类的图像。类标签来源于子文件夹名。 示例请参见基于深度网络设计器的迁移学习. |
选择导入数据>导入图像数据. 您可以使用“导入映像数据”对话框选择增强选项并指定验证数据。 导入之后,深度网络设计器将显示类标签的直方图。您还可以看到来自每个类的随机观察。 |
|
例如,创建一个包含数字数据的图像数据存储。 dataFolder = fullfile(toolboxdir)“nnet”),“nndemos”,...“nndatasets”,“DigitDataset”);imds = imageDatastore(dataFolder,...“IncludeSubfolders”,真的,...“LabelSource”,“foldernames”); |
|||
例如,创建一个包含数字数据的增强图像数据存储。 dataFolder = fullfile(toolboxdir)“nnet”),“nndemos”,...“nndatasets”,“DigitDataset”);imds = imageDatastore(dataFolder,...“IncludeSubfolders”,真的,...“LabelSource”,“foldernames”);imageAugmenter = imageDataAugmenter(...“RandRotation”[1,2]);augimds = augmentedImageDatastore([28 28],imds,...“DataAugmentation”, imageAugmenter);Augimds = shuffle(Augimds); |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入之后,Deep Network Designer将显示数据存储中前五个观察结果的预览。 |
|
|
语义分割 | 例如,合并an dataFolder = fullfile(toolboxdir)“愿景”),...“visiondata”,“triangleImages”);imageDir = fullfile(dataFolder,“trainingImages”);labelDir = fullfile(dataFolder,“trainingLabels”);imds = imageDatastore(imageDir);classNames = [“三角形”,“背景”];labelIDs = [255 0];pxds = pixelLabelDatastore(labelDir,classNames,labelIDs);CDS = combine(imds,pxds); 你也可以组合 pximds = pixelLabelImageDatastore(imds,pxds); |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入之后,Deep Network Designer将显示数据存储中前五个观察结果的预览。 |
|
Image-to-image回归 | 例如,结合有噪声的输入图像和原始输出图像来创建适合图像到图像回归的数据。 dataFolder = fullfile(toolboxdir)“nnet”),“nndemos”,...“nndatasets”,“DigitDataset”);imds = imageDatastore(dataFolder,...“IncludeSubfolders”,真的,....“LabelSource”,“foldernames”);Imds = transform(Imds,@(x) rescale(x));imdsNoise = transform(imds,@(x) {imnoise(x,“高斯”, 0.2)});cd = combine(imdsNoise,imds);cd = shuffle(cd); |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入之后,Deep Network Designer将显示数据存储中前五个观察结果的预览。 |
|
回归 | 通过组合数组数据存储对象,创建适合训练回归网络的数据。 [XTrain,~,YTrain] = digitTrain4DArrayData;ads = arrayDatastore(XTrain,“IterationDimension”4...“OutputType”,“细胞”);adsAngles = arrayDatastore(YTrain,“OutputType”,“细胞”);cds = combine(ads,adsAngles); 有关训练回归网络的更多信息,请参见训练卷积神经网络用于回归. |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入之后,Deep Network Designer将显示数据存储中前五个观察结果的预览。 |
|
序列和时间序列 | 对于内存中的数据,通过组合数组数据存储对象来创建适合训练的数据。 [XTrain,YTrain] = japevowelstraaindata;XTrain = padsequences(XTrain,2);adsXTrain = arrayDatastore(XTrain,“IterationDimension”3);adsYTrain = arrayDatastore(YTrain);cdsTrain = combine(adsXTrain,adsYTrain);
有关用时间序列数据训练网络的信息,请参见基于深度网络设计器的时间序列预测训练网络. 对于内存不足的数据,请使用自定义数据存储对象。有关显示如何创建自定义序列数据存储的示例,请参见使用序列数据的自定义小批数据存储训练网络. |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入之后,Deep Network Designer将显示数据存储中前五个观察结果的预览。 |
|
其他扩展工作流(例如数字特征输入、内存不足数据、图像处理以及音频和语音处理) | 数据存储 对于其他扩展工作流,使用合适的数据存储对象。例如,自定义数据存储, 例如,创建一个 dataFolder = fullfile(toolboxdir)“图片”),“imdata”);imds = imageDatastore(dataFolder,“FileExtensions”, {“jpg”});dnds =降噪imagedatastore (imds,...“PatchesPerImage”, 512,...“PatchSize”, 50岁,...“GaussianNoiseLevel”[0.01 - 0.1]); 有关如何根据音频数据训练深度学习网络的示例,请参见深度网络设计器中预训练音频网络的迁移学习. 对于表数组数据,必须将数据转换为合适的数据存储,以便使用深度网络设计器进行训练。例如,首先将表转换为包含预测器和响应的数组。然后,将数组转换为 |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入之后,Deep Network Designer将显示数据存储中前五个观察结果的预览。 |
|
图像增强
对于图像分类问题,深度网络设计器提供了应用于训练数据的简单增强选项。通过选择打开导入映像数据对话框导入数据>导入图像数据.您可以选择选项,对训练数据应用反射、旋转、缩放和转换操作的随机组合。
通过对数据应用随机增强,可以有效地增加训练数据的数量。增强还使您能够训练网络不受图像数据失真的影响。例如,您可以向输入图像添加随机旋转,以便网络对输入图像中的旋转不受影响。数据增强还有助于防止网络过拟合和记忆训练图像的精确细节。当您使用数据增强时,在训练的每个历元中使用每个图像的一个随机增强版本,其中一个历元是训练算法在整个训练数据集上的全遍历。因此,每个epoch使用的数据集略有不同,但每个epoch中训练图像的实际数量没有变化。有关更多信息,请参见创建和探索图像分类的数据存储.
要执行比深度网络设计器提供的更一般和复杂的图像预处理操作,请使用TransformedDatastore
而且CombinedDatastore
对象。进口CombinedDatastore
而且TransformedDatastore
对象,选择导入数据>导入数据存储.
有关图像增强的更多信息,请参见用于深度学习的图像预处理.
验证数据
在深度网络设计器中,您可以导入验证数据,以便在培训期间使用。验证数据是网络在训练期间不用于更新权重和偏差的数据。由于网络并不直接使用这些数据,因此在训练过程中,它对于评估网络的真实准确性非常有用。您可以监视验证指标,如损失和准确性,以评估网络是否过拟合或过拟合,并根据需要调整训练选项。例如,如果验证损失远远高于训练损失,那么网络可能过拟合。
有关提高深度学习网络准确性的更多信息,请参见深度学习技巧.
在深度网络设计器中,您可以导入验证数据:
从工作区中的数据存储。
从包含每个类别的图像子文件夹(仅为图像分类数据)的文件夹。
通过分割一部分训练数据来用作验证数据(仅用于图像分类数据)。在训练之前,数据被分成一次验证集和训练集。这种方法被称为坚持验证。
从训练数据中分离验证数据
当从训练数据中分离坚持验证数据时,Deep Network Designer从每个类中分离一定百分比的训练数据。例如,假设您有一个包含两个类(猫和狗)的数据集,并选择使用30%的训练数据进行验证。Deep Network Designer使用标签为“cat”的最后30%图像和标签为“dog”的最后30%图像作为验证集。
而不是使用最后30%的训练数据作为验证数据,您可以选择随机分配观察到训练和验证集随机化复选框中的“导入映像数据”。将图像随机化可以提高以非随机顺序存储的数据训练的网络的准确性。例如,数字数据集由10,000个手写数字的合成灰度图像组成。这个数据集有一个基本的顺序,在每个类中,具有相同笔迹风格的图像紧挨着出现。下面是一个显示示例。
随机化确保在分割数据时,图像被打乱,以便训练和验证集包含来自每个类的随机图像。使用由相似的图像分布组成的训练和验证数据可以帮助防止过拟合。不随机化数据可以确保每次训练和验证数据的分割是相同的,并有助于提高结果的可重复性。有关更多信息,请参见splitEachLabel
.
另请参阅
深度网络设计器|TransformedDatastore
|CombinedDatastore
|imageDatastore
|augmentedImageDatastore
|splitEachLabel