中导入和可视化训练和验证数据深度网络设计器.使用这个应用程序,你可以:
有关可用于开始深度学习的数据集的更多信息,请参见深度学习的数据集.有关为深度学习应用程序构造和使用数据存储对象的更多信息,请参见用于深度学习的数据存储.
在Deep Network Designer中,您可以从图像数据存储或包含每个类的图像子文件夹的文件夹中导入图像分类数据。类的任何数据存储对象也可以导入和训练trainNetwork
函数。根据所使用的数据存储类型选择导入方法。
进口ImageDatastore 对象 |
导入其他数据存储对象(不推荐)ImageDatastore ) |
---|---|
选择导入数据>导入镜像数据. |
选择导入数据>导入数据存储. |
导入后,深度网络设计器提供了导入数据的预览,以便您可以在训练之前检查数据是否符合预期。对于图像分类数据,Deep Network Designer还显示了类标签的直方图和从导入数据中随机选择的图像。您还可以选择查看属于特定类的随机图像。
按任务导入数据
任务 | 数据类型 | 数据导入方法 | 可视化例子 |
---|---|---|---|
图像分类 | 文件夹,每个类的子文件夹包含图像。类标签来源于子文件夹名。 有关示例,请参见基于深度网络设计器的迁移学习. |
选择导入数据>导入镜像数据. 您可以使用“导入映像数据”对话框选择增强选项并指定验证数据。 导入后,深度网络设计器显示类标签的直方图。您还可以看到每个类的随机观察结果。 |
|
例如,创建一个包含数字数据的图像数据存储。 dataFolder = fullfile(toolboxdir(“nnet”),“nndemos”,...“nndatasets”,“DigitDataset”);imds = imageDatastore(数据文件夹,...“IncludeSubfolders”,真的,...“LabelSource”,“foldernames”); |
|||
例如,创建一个包含数字数据的增强图像数据存储。 dataFolder = fullfile(toolboxdir(“nnet”),“nndemos”,...“nndatasets”,“DigitDataset”);imds = imageDatastore(数据文件夹,...“IncludeSubfolders”,真的,...“LabelSource”,“foldernames”);imageAugmenter = imageDataAugmenter(...“RandRotation”[1,2]);augimds = augmentedImageDatastore([28 28],imds,...“DataAugmentation”, imageAugmenter);Augimds = shuffle(Augimds); |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入后,Deep Network Designer会显示数据存储中前五个观测值的预览。 |
|
|
语义分割 | 例如,合并一个 dataFolder = fullfile(toolboxdir(“愿景”),...“visiondata”,“triangleImages”);imageDir = fullfile(dataFolder,“trainingImages”);labelDir = fullfile(数据文件夹,“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(数据文件夹,...“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”,“细胞”);cd = combine(ads,adsAngles); 有关训练回归网络的更多信息,请参见训练卷积神经网络回归. |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入后,Deep Network Designer会显示数据存储中前五个观测值的预览。 |
|
序列和时间序列 | 对于内存中的数据,通过组合数组数据存储对象创建适合训练的数据。 [XTrain,YTrain] =日本evowelstraindata;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(数据文件夹,“FileExtensions”, {“jpg”});dnds =去噪imagedatastore (imds,...“PatchesPerImage”, 512,...“PatchSize”, 50岁,...“GaussianNoiseLevel”[0.01 - 0.1]); 对于表数组数据,必须将数据转换为合适的数据存储,以便使用Deep Network Designer进行训练。例如,首先将您的表转换为包含预测器和响应的数组。然后,将数组转换为 |
选择导入数据>导入数据存储. 您可以在“导入数据存储”对话框中指定验证数据。 导入后,Deep Network Designer会显示数据存储中前五个观测值的预览。 |
|
对于图像分类问题,Deep Network Designer提供了应用于训练数据的简单增强选项。单击,打开“导入镜像数据”对话框导入数据>导入镜像数据.您可以选择选项,对训练数据应用反射、旋转、重新缩放和转换操作的随机组合。
通过对数据应用随机增强,可以有效地增加训练数据的数量。增强还使您能够训练网络,使其不受图像数据扭曲的影响。例如,您可以向输入图像添加随机旋转,以便网络对输入图像中旋转的存在是不变的。数据增强还可以帮助防止网络过度拟合和记忆训练图像的确切细节。当您使用数据增强时,在训练的每个历元期间使用每个图像的随机增强版本,其中一个历元是训练算法对整个训练数据集的完整传递。因此,每个epoch使用的数据集略有不同,但每个epoch的训练图像的实际数量不会改变。有关更多信息,请参见创建和探索图像分类的数据存储.
要执行比Deep Network Designer提供的更一般和更复杂的图像预处理操作,请使用TransformedDatastore
而且CombinedDatastore
对象。进口CombinedDatastore
而且TransformedDatastore
对象,选择导入数据>导入数据存储.
有关图像增强的更多信息,请参见用于深度学习的图像预处理.
在深度网络设计器中,您可以导入验证数据以在培训期间使用。验证数据是网络在训练期间不用于更新权重和偏差的数据。由于网络不直接使用这些数据,因此在训练过程中,它对于评估网络的真实准确性非常有用。您可以监视验证指标,例如损失和准确性,以评估网络是否过拟合或欠拟合,并根据需要调整训练选项。例如,如果验证损失远高于训练损失,则网络可能过拟合。
有关提高深度学习网络的准确性的更多信息,请参见深度学习技巧和技巧.
在Deep Network Designer中,您可以导入验证数据:
从工作区中的数据存储。
从包含每个类的图像子文件夹的文件夹中(仅用于图像分类数据)。
通过分割一部分训练数据作为验证数据(仅限图像分类数据)。
当从训练数据中分离验证数据时,深度网络设计器从每个类中分离一定百分比的训练数据。例如,假设您有一个包含猫和狗两个类的数据集,并选择使用30%的训练数据进行验证。Deep Network Designer使用标签为“猫”的图像的最后30%和标签为“狗”的最后30%作为验证集。
,而不是使用最后30%的训练数据作为验证数据,您可以选择将观察值随机分配到训练集和验证集随机化“导入镜像数据”对话框中的复选框。随机化图像可以提高以非随机顺序存储的数据训练网络的准确性。例如,数字数据集由10,000个手写数字的合成灰度图像组成。这个数据集有一个基本的顺序,在每个类中,具有相同笔迹风格的图像相邻出现。下面是显示的示例。
随机化确保在分割数据时,图像被打乱,以便训练集和验证集包含来自每个类的随机图像。使用由相似分布的图像组成的训练和验证数据可以帮助防止过拟合。不随机数据可以确保训练和验证数据每次都是相同的,并有助于提高结果的可重复性。有关更多信息,请参见splitEachLabel
.
深度网络设计器|TransformedDatastore
|CombinedDatastore
|imageDatastore
|augmentedImageDatastore
|splitEachLabel