主要内容

trainNetwork

训练深度学习神经网络

描述

对于分类和回归任务,您可以使用trainNetwork函数。

例如,你可以培训:

  • 图像数据的卷积神经网络(ConvNet,CNN)

  • 诸如长短期存储器(LSTM)的经常性神经网络(RNN)或用于序列和时间序列数据的GED门控复发单元(GRU)网络

  • 用于数值特征数据的多层感知器(MLP)网络

您可以在CPU或GPU上培训。对于图像分类和图像回归,您可以使用多个GPU或本地或远程并行池并行培训单个网络。在GPU或并行训练需要并行计算工具箱™。要使用GPU进行深度学习,您还必须有支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU通万博1manbetx过发布支持(并行计算工具箱)要指定培训选项,包括执行环境的选项,请使用培训选项函数。

在训练神经网络时,可以将预测器和响应指定为单个输入或两个单独的输入。

例子

= trainnetwork(图片选项训练指定的神经网络用于使用指定的图像和响应的图像分类和回归任务图片以及由选项

例子

= trainnetwork(图片反应选项使用指定的图像列车图片以及由反应

= trainnetwork(序列选项使用指定的序列和响应训练神经网络进行序列或时间序列分类和回归任务(例如,LSTM或GRU网络)序列

例子

= trainnetwork(序列反应选项使用由指定的序列进行列车序列以及由反应

例子

= trainnetwork(特性选项使用指定的特征数据和响应训练神经网络进行特征分类或回归任务(例如,多层感知器(MLP)网络)特性

= trainnetwork(特性反应选项使用指定的特征数据的列车特性以及由反应

信息) = trainNetwork (___还返回关于使用前面任何语法的培训的信息。

例子

全部折叠

将数据加载为ImageDatastore对象。

digitDatasetPath = fullfile (matlabroot,“工具箱”'nnet'...“nndemos”“nndatasets”“DigitDataset”);imd = imageDatastore (digitDatasetPath,...“IncludeSubfolders”,真的,...“LabelSource”“foldernames”);

该数据存储包含10,000个从0到9的合成图像。这些图像是通过对使用不同字体创建的数字图像应用随机转换生成的。每个数字图像是28 × 28像素。数据存储中每个类别包含相同数量的图像。

在数据存储中显示一些图像。

图numimages = 10000;perm = randperm(numimages,20);I = 1:20 subplot(4,5, I);imshow (imds.Files{烫发(i)});drawnow;结束

划分数据存储,以便培训集中的每个类别具有750个图像,并且测试集具有来自每个标签的剩余图像。

numTrainingFiles = 750;[imdsTrain, imdsTest] = splitEachLabel (imd, numTrainingFiles“随机”);

splitEachLabel分割图像文件digitdata.存入两个新的数据存储,imdsTrainimdsTest

定义卷积神经网络结构。

层= [...imageInputLayer([28 28 1])卷积2dlayer (5,20) reluLayer maxPooling2dLayer(2, 20)“步”,2)全连接列(10)SoftmaxLayer分类层];

将动量随机梯度下降的选项设置为默认设置。设置最大纪元数为20,初始学习率为0.0001,开始训练。

选择= trainingOptions (“个”...“MaxEpochs”, 20岁,...“InitialLearnRate”,1e-4,...“详细”假的,...“阴谋”'培训 - 进步');

培训网络。

网= trainNetwork (imdsTrain层,选项);

在未用于训练网络的测试集中运行训练网络,并预测图像标签(数字)。

YPred =分类(净,imdsTest);欧美= imdsTest.Labels;

计算的准确性。准确率是测试数据中与分类匹配的真标签数的比率分类到测试数据中的图像数量。

精度= sum(YPred == YTest)/numel(YTest)
精度= 0.9420.

利用增强图像数据训练卷积神经网络。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。

加载样本数据,由手写数字的合成图像组成。

[XTrain, YTrain] = digitTrain4DArrayData;

digittrain4darraydata.将数字训练集加载为4-D阵列数据。XTrain是一个28 × 28 × 1 × 5000的数组,其中:

  • 28是图像的高度和宽度。

  • 1是通道的数量。

  • 5000是手写数字合成图像的数量。

YTrain是包含每个观察的标签的分类向量。

预留1000个图像用于网络验证。

idx = randperm(大小(XTrain, 4), 1000);XValidation = XTrain (:,:,:, idx);XTrain (::,:, idx) = [];YValidation = YTrain (idx);YTrain (idx) = [];

创建一个imageDataAugmenter对象,该对象指定用于图像增强的预处理选项,如调整大小、旋转、平移和反射。随机将图像水平和垂直平移到三个像素,并旋转图像的角度高达20度。

imageAugmenter = imageDataAugmenter (...“RandRotation”(-20年,20),...'randxtranslation'3 [3],...“RandYTranslation”3 [3])
imageAugmenter = imageDataAugmenter with properties: 0 RandXReflection: 0 RandYReflection: 0 RandRotation: [-20 20] RandScale: [1 1] RandXScale: [1 1] RandYScale: [1 1] RandXShear: [0 0] RandYShear: [0 0] RandXTranslation: [-3 3] RandYTranslation: [-3 3]

创建一个AugmentedimageGedataStore.对象用于网络训练并指定图像输出大小。在训练期间,数据存储执行图像增强和调整图像的大小。数据存储增加图像而不保存任何图像到内存。trainNetwork更新网络参数,然后丢弃增强后的图像。

imageSize = [28 28 1];augimds = augmentedImageDatastore(图象尺寸、XTrain YTrain,“DataAugmentation”, imageAugmenter);

指定卷积神经网络结构。

[imageInputLayer(imageSize)] = [imageInputLayer(imageSize)]'填充''相同的'maxPooling2dLayer(2,“步”,2)卷积2dlayer(3,16,'填充''相同的'maxPooling2dLayer(2,“步”,2)卷积2dlayer(3,32,'填充''相同的') batchNormalizationLayer relullayer fulllyconnectedlayer (10) softmaxLayer classificationLayer];

为带动量的随机梯度下降指定训练选项。

选择=培训选项(“个”...“MaxEpochs”15,...'洗牌''每个时代'...“阴谋”'培训 - 进步'...“详细”假的,...“ValidationData”, {XValidation, YValidation});

培训网络。由于验证图像未增强,所以验证精度高于训练精度。

网= trainNetwork (augimds层,选择);

加载样本数据,由手写数字的合成图像组成。第三输出包含每个图像旋转的度数的相应角度。

以4-D数组的形式加载训练图像digittrain4darraydata..输出XTrain是一个28 × 28 × 1 × 5000的数组,其中:

  • 28是图像的高度和宽度。

  • 1是通道的数量。

  • 5000是手写数字合成图像的数量。

YTrain包含度数的旋转角度。

[XTrain ~, YTrain] = digitTrain4DArrayData;

显示20个随机训练图像使用imshow

figure numTrainImages = nummel (YTrain);idx = randperm (numTrainImages 20);i = 1:numel(idx)子图(4,5,i)imshow(xtrain(:,:,:,iDx(i)))绘制;结束

指定卷积神经网络结构。对于回归问题,包括在网络末尾的回归层。

层= [...imageInputLayer([28 28 1])卷积2dlayer (12,25) reluLayer fulllyconnectedlayer (1) regressionLayer];

指定网络培训选项。将初始学习速度设置为0.001。

选择= trainingOptions (“个”...“InitialLearnRate”,0.001,...“详细”假的,...“阴谋”'培训 - 进步');

培训网络。

网= trainNetwork (XTrain、YTrain层,选择);

通过评估测试数据的预测准确性来测试网络的性能。使用预测来预测验证图像的旋转角度。

[XTest ~,欧美]= digitTest4DArrayData;YPred =预测(净,XTest);

通过计算预测和实际旋转角度的根均方误差(RMSE)来评估模型的性能。

rmse =√(mean((YTest - YPred).^2)))
RMSE =.单身的6.0356

训练深度学习LSTM网络用于序列到标签的分类。

如[1]和[2]中所述加载日语元音数据集。XTrain是一个细胞阵列,包含270个不同长度的序列,具有12个特征,对应于LPC倒谱系数。Y是标签1,2,...,9的分类矢量。参赛作品XTrain是具有12行的矩阵(每个特征的一行)和不同数量的列(每次步骤一列)。

[Xtrain,Ytrain] = JapanesevowelstrainData;

想象情节中的第一个时间序列。每一行对应一个特征。

图绘制(XTrain{1}”)标题(“训练观察1”) numFeatures = size(XTrain{1},1);传奇(“特性”+字符串(1:numFeatures),'地点'“northeastoutside”

定义LSTM网络架构。指定输入大小为12(输入数据的特征数量)。指定一个LSTM层有100个隐藏单元,并输出序列的最后一个元素。最后,通过包含大小为9的完全连接层、softmax层和分类层来指定9个类。

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer(InputSize)LSTMLAYER(NUMHIDNEDURITS,'OutputMode'“最后一次”)软连接层(numClasses)
图层= 5×1层阵列,带有图层:1''序列输入序列输入,带12尺寸2''LSTM LSTM,具有100个隐藏单元3'完全连接的9个完全连接的第4层''Softmax SoftMax 5''分类输出CrossentRopyex

指定培训选项。指定求解器为'亚当'“GradientThreshold”为1。设置mini-batch size为27,最大epoch数为70。

因为迷你批很小,序列很短,所以CPU更适合于训练。集“ExecutionEnvironment”“cpu”.如果需要在GPU上进行训练,请设置“ExecutionEnvironment”“汽车”(默认值)。

maxEpochs = 70;miniBatchSize = 27个;选择= trainingOptions ('亚当'...“ExecutionEnvironment”“cpu”...“MaxEpochs”,maxepochs,...'minibatchsize'miniBatchSize,...“GradientThreshold”,1,...“详细”假的,...“阴谋”'培训 - 进步');

使用指定的培训选项列车LSTM网络。

网= trainNetwork (XTrain、YTrain层,选择);

加载测试集并将序列分类为扬声器。

[XTest,欧美]= japaneseVowelsTestData;

对测试数据进行分类。指定与培训相同的小批量大小。

XTest YPred =分类(净,'minibatchsize', miniBatchSize);

计算预测的分类精度。

acc = sum(YPred == YTest)./numel(YTest)
ACC = 0.9514.

如果您有一组数字特征数据(例如一组没有空间或时间维度的数字数据),那么您可以使用特征输入层训练一个深度学习网络。

从CSV文件中读取传输框数据“transmissionCasingData.csv”

文件名=“transmissionCasingData.csv”;tbl = readtable(文件名,'texttype''细绳');

将标签转换为使用分类的预测convertvars函数。

labelName =“GearToothCondition”;台= convertvars(资源描述、labelName'分类');

要使用分类特征训练网络,必须首先将分类特征转换为数字。首先,将分类预测符转换为分类预测符convertvars函数的方法是指定一个包含所有分类输入变量名称的字符串数组。在这个数据集中,有两个带有名称的分类特性“SensorCondition”“shaftcondition”

categoricalInputNames = [“SensorCondition”“shaftcondition”];台= convertvars(资源描述、categoricalInputNames'分类');

循环分类输入变量。为每一个变量:

  • 属性将分类值转换为一个热点编码向量onehotencode函数。

  • 使用介绍将单热量向量添加到表中addvars.函数。指定在包含相应类别数据的列之后插入向量。

  • 删除包含分类数据的相应列。

i = 1:numel(categoricalInputNames) name = categoricalInputNames(i);哦= onehotencode(资源描述(:,名字));台= addvars(资源描述,哦,'后',姓名);tbl(:,name)= [];结束

将vectors拆分为单独的列使用splitvars函数。

台= splitvars(台);

查看表的前几行。请注意,分类预测器被分割为多个列,其中分类值作为变量名。

头(TBL)
ans =.表8×23SigMean SigMedian SigRMS SigVar SigPeak SigPeak2Peak SigSkewness SigKurtosis SigCrestFactor SigMAD SigRangeCumSum SigCorrDimension SigApproxEntropy SigLyapExponent PeakFreq HighFreqPower EnvPower PeakSpecKurtosis无传感器漂移传感器漂移无轴的磨损轴的磨损GearToothCondition ________ _________ ______ _______ _______ ____________ ___________ ___________ ______________ _______ ______________ ________________ ________________ _______________ ________ _____________ ________ ________________ _______________ ____________ _______________________ __________________ -0.94876 -0.9722 1.3726 0.98387 0.81571 3.6314 -0.041525 2.2666 2.0514 0.8081 28562 1.1429 0.031581 79.931 0 6.75e-06 3.23e-07 162.13 0 1 1 0无齿故障-0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 294181.1362 0.037835 70.325 0 5.08E-08 9.16E-08 226.12 0 1 1 0无齿故障1.0502 1.0267 1.4449 0.98491 2.8157 3.6314 -0.04162 2.2658 1.9487 0.80853 31712 0.80853 31710 1.1479 0.0.031565 125.19 0 6.74e-06 2.85E-07 162.13 0 1 0 1无齿故障1.0227 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 0.81324 30984 0.81324 30984 1.1472 0.0.0 4.0 4.0 4.0 40-071112.5 0 1 0 1/10 1 0 40 40-07 162.13 0 1 0 1无齿故障1.0123 1.0024 1.01230.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 0 3.62E-06 2.28e-07 230.39 0 1 0 1无齿故障1.0275 1.0102 1.4338 1.0001 2.8157 3.6314 -0.02659 2.2439 1.9638 0.81589 31102 1.0985 0.033427 64.576 0 2.55e-06 1.65e-07 230.39 0 1 0 1无齿故障1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 2.9449 0.81595 1.9449 0.81595 3.9449 0.81595 3.9449 0.81595 31665 1.1415 0. 0.0 1.73C-06 1.552-07/12.81590 1.73C-06 0 1 0 1无齿FAULT 1.0459 1.0257 1.0257 1.0257 1.4402 0.9802 0.9802 0.9802 0.9802 0.9802 0.98027 1.0.035405 2.2757 1.955 0.80583 0.80583 31554 1.1345 0.0353 44.223 0 1.11E-06 1.39E-07 230.39 0 1 0 1无齿故障

查看数据集的类名。

ClassNames =类别(TBL {:,labelName})
一会=2×1细胞{'无牙齿故障'}{'牙齿故障'}

接下来,将数据分区设置为训练和测试分区。留出15%的测试数据。

确定每个分区的观察数。

numObservations =大小(1台);numObservationsTrain =地板(0.85 * numObservations);numObservationsTest = numObservations - numObservationsTrain;

使用分区大小创建与观察和分区对应的随机索引数组。

idx = randperm (numObservations);idxTrain = idx (1: numObservationsTrain);idxTest = idx (numObservationsTrain + 1:结束);

使用索引将数据表划分为训练、验证和测试分区。

tblTrain =(资源(idxTrain:);tblTest =(资源(idxTest:);

定义一个具有特征输入层的网络,并指定特征的数量。另外,配置输入层,使用Z-score标准化对数据进行标准化。

numFeatures = size(tbl,2) - 1;numClasses =元素个数(类名);[featureInputLayer(numFeatures,'正常化'“zscore”)fullyConnectedLayer(50)batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses)softmaxLayer classificationLayer];

指定培训选项。

miniBatchSize = 16;选择= trainingOptions ('亚当'...'minibatchsize'miniBatchSize,...'洗牌''每个时代'...“阴谋”'培训 - 进步'...“详细”,错误的);

使用由架构定义的架构列车、培训数据和培训选项。

网= trainNetwork (tblTrain层,选项);

利用训练好的网络预测测试数据的标号,并计算其精度。准确率是指网络预测正确标签的比例。

tblTest YPred =分类(净,'minibatchsize', miniBatchSize);欧美= tblTest {: labelName};精度= sum(YPred == YTest)/numel(YTest)
精度= 0.9688

输入参数

全部折叠

图像数据,指定为以下其中之一:

数据类型 描述 例用法
数据存储 ImageDatastore 包含图像和标签的数据存储。

用存储在磁盘上的相同大小的图像训练图像分类神经网络。

当图像大小不同时,使用AugmentedImageDatastore对象。

ImageDatastore对象只支持图像分万博1manbetx类任务。要为回归网络使用图像数据存储,请创建包含图像和响应的转换或组合数据存储转变结合函数,分别。

AugmentedImageDatastore 应用随机仿射几何转换(包括调整大小、旋转、反射、剪切和平移)的数据存储。

  • 用存储在磁盘上的不同大小的图像训练图像分类神经网络。

  • 训练图像分类神经网络,利用增广生成新的数据。

TransformedDatastore 使用自定义转换函数转换从底层数据存储读取的数据批的数据存储。

  • 训练图像回归神经网络。

  • 具有多个输入的列车网络。

  • 控件不支持的数据存储的输出万博1manbetxtrainNetwork函数具有所需格式。

  • 将自定义转换应用于数据存储输出。

ConventDatastore. 数据存储来自两个或多个底层数据存储。

  • 训练图像回归神经网络。

  • 具有多个输入的列车网络。

  • 组合来自不同数据源的预测器和响应。

PixelLabelImageDatastore(计算机视觉工具箱) 对图像和相应的像素标签应用相同仿射几何变换的数据存储。 火车神经网络进行语义细分。
RandomPatchExtractionDatastore(图像处理工具箱) 从图像或像素标签图像中提取随机补丁对的数据存储,并且可选地将相同的随机仿射几何变换应用于对。 火车神经网络进行物体检测。
DenoisingImageDatastore(图像处理工具箱) 应用随机生成的高斯噪声的数据存储。 训练神经网络去噪图像。
自定义迷你批量数据存储 返回小批量数据的自定义数据存储。

使用其他数据存储不支持的格式的数据训练神经网络。万博1manbetx

有关详细信息,请参见开发自定义小批量数据存储

数字数组 指定为数字数组的图像。如果指定图像为数字数组,则还必须指定反应论点。 训练神经网络使用适合内存的数据,不需要额外的处理,如增强。
表格 指定为表的图像。如果将图像指定为表,则还可以使用反应论点。 使用存储在表中的数据列车神经网络。

对于有多个输入的网络,数据存储必须是TransformedDatastore或者ConventDatastore.对象。

提示

对于图像序列,例如视频数据,使用序列输入参数。

数据存储

数据存储读取小批量的映像和响应。当数据无法放入内存或希望对数据应用扩展或转换时,数据存储是最合适的。

下面的列表列出了直接兼容的数据存储trainNetwork图像数据。

例如,可以使用imageDatastore通过设置函数并使用包含图像的文件夹的名称作为标签“LabelSource”选项“foldernames”.控件也可以手动指定标签标签属性的图像数据存储。

注意ImageDatastore对象允许使用预取的批量读取JPG或PNG图像文件。如果您使用自定义函数来读取图像,那么ImageDatastore对象不预取。

提示

使用AugmentedimageGedataStore.用于高学习的图像高效预处理,包括图像调整大小。

不要使用readFcn选择imageDatastore对于预处理或调整大小,这个选项通常非常慢。

可以使用其他内置数据存储来训练深度学习网络转变结合功能。这些功能可以将从数据存储读取的数据转换为所需的格式trainNetwork

对于有多个输入的网络,数据存储必须是TransformedDatastore或者ConventDatastore.对象。

数据存储输出所需的格式取决于网络架构。

网络体系结构 数据存储输出 示例输出
单个输入层

具有两列的表或单元格数组。

第一列和第二列分别指定预测器和响应。

表元素必须是标量、行向量或包含数字数组的1 × 1单元格数组。

自定义迷你批处理数据存储必须输出表。

一输入一输出网络表:

数据=读取(DS)
data = 4×2 table Predictors Response __________________ ________ {224×224×3 double} 2 {224×224×3 double} 7 {224×224×3 double} 9 {224×224×3 double} 9

一个输入一个输出的网络单元阵列:

数据=读取(DS)
Data = 4×2 cell array {224×224×3 double} {[2]} {224×224×3 double} {[7]} {224×224×3 double} {[9]} {224×224×3 double} {[9]}

多个输入层

细胞阵列与(numInputs+ 1)列,在哪里numInputs为网络输入的个数。

首先numInputs列为每个输入指定预测器,最后一列指定响应。

输入的顺序由InputNames层图的性质

单元阵列用于具有两个输入和一个输出的网络。

数据=读取(DS)
Data = 4×3 cell array {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[2]} {224×224×3 double} {128×128×3 double} {[9]} {224×224×3 double} {128×128×3 double} {[9]}

预测器的格式取决于数据的类型。

数据 格式
二维图像

h-经过-w-经过-c数字数组,其中hw, 和c是图像的高度,宽度和数量分别。

3-D图像 h-经过-w-经过-d-经过-c数字数组,其中hwd, 和c分别为图像的高度、宽度、深度和通道数量。

对于在表中返回的预测器,元素必须包含数字标量,数字行向量或包含数字数组的1-1个单元格数组。

响应的格式取决于任务的类型。

任务 响应格式
图像分类 绝对标量
形象回归
  • 数字标量

  • 数值向量

  • 表示二维图像的三维数字数组

  • 代表三维图像的4-D数字数组

对于表中返回的响应,元素必须是类别标量、数字标量、数字行向量或包含数字数组的1 × 1单元格数组。

有关更多信息,请参见用于深度学习的数据存储

数字数组

对于适用于内存的数据并且不需要增加的其他处理,您可以将数据集指定为数字数组。如果指定图像为数字数组,则还必须指定反应论点。

数字数组的大小和形状取决于图像数据的类型。

数据 格式
二维图像

h-经过-w-经过-c-经过-N数字数组,其中hw, 和c图像的高度、宽度和通道数量分别是和吗N为图像的个数。

3-D图像 h-经过-w-经过-d-经过-c-经过-N数字数组,其中hwd, 和c图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。

表格

作为数据存储或数字数组的替代方案,您还可以在表中指定图像和响应。如果将图像指定为表,则还可以使用反应论点。

在表中指定图像和响应时,表中的每一行都对应一个观察结果。

对于图像输入,预测器必须在表的第一列,指定为以下之一:

  • 指定为字符向量的图像的绝对或相对文件路径

  • 包含a的1×1个单元阵列h-经过-w-经过-c数字数组表示2-D图像,其中hw, 和c分别对应于图像的高度、宽度和通道数量。

响应的格式取决于任务的类型。

任务 响应格式
图像分类 绝对标量
形象回归
  • 数字标量

  • 两列或多列标量值

  • 包含a的1×1个单元阵列h-经过-w-经过-c表示二维图像的数字数组

  • 包含a的1×1个单元阵列h-经过-w-经过-d-经过-c表示三维图像的数字数组

对于具有图像输入的神经网络,如果您没有指定反应,则该函数在默认情况下使用的第一列资源描述将预测器和后续列作为响应。

提示

如果预测器或响应包含S,然后在训练期间通过网络传播。在这些情况下,训练通常不能收敛。

提示

对于回归任务,将反应归一化通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络用于回归

序列或时间序列数据,指定为下列数据之一:

数据类型 描述 例用法
数据存储 TransformedDatastore 使用自定义转换函数转换从底层数据存储读取的数据批的数据存储。

  • 转换不支持的数据存储输出万博1manbetxtrainNetwork到有必要的格式。

  • 将自定义转换应用于数据存储输出。

ConventDatastore. 数据存储来自两个或多个底层数据存储。

组合来自不同数据源的预测器和响应。

自定义迷你批量数据存储 返回小批量数据的自定义数据存储。

使用其他数据存储不支持的格式的数据训练神经网络。万博1manbetx

有关详细信息,请参见开发自定义小批量数据存储

数字或单元数组 指定为数字数组的单个序列,或指定为数字数组的单元格数组的序列数据集。如果将序列指定为数字或单元格数组,则还必须指定反应论点。 使用适合内存的数据训练神经网络,不需要额外的处理,如自定义转换。

数据存储

数据存储读取小批次序列和响应。当数据无法放入内存或希望对数据应用转换时,数据存储是最合适的。

下面的列表列出了直接兼容的数据存储trainNetwork用于序列数据。

可以使用其他内置数据存储来训练深度学习网络转变结合功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式trainNetwork.例如,您可以使用内存阵列和CSV文件读取的数据转换和组合ArrayDatastoreTabularTextDatastore对象,分别。

数据存储必须返回表或单元格数组中的数据。自定义小批处理数据存储必须输出表。

数据存储输出 示例输出
表格
数据=读取(DS)
数据= 4×2表预测响应响应__________________ ________ {12×50双} 2 {12×50 double} 7 {12×50 double} 9 {12×50 double} 9
单元阵列
数据=读取(DS)
数据= 4×2单元阵列{12×50 double} {[2]} {12×50 double} {[7]} {12×50 double} {[9]} {12×50 double} {[9]}

预测器的格式取决于数据的类型。

数据 格式的预测
向量序列

c-经过-年代矩阵,c数列的特征数是和吗年代为序列长度。

2-D图像序列

h-经过-w-经过-c-经过-年代数组,hw, 和c分别对应图像的高度、宽度和通道数量,和年代为序列长度。

迷你批处理中的每个序列必须具有相同的序列长度。

3-D图像序列

h-经过-w-经过-d-经过-c-经过-年代数组,hwd, 和c分别对应图像的高度、宽度、深度和通道数量,和年代为序列长度。

迷你批处理中的每个序列必须具有相同的序列长度。

对于表中返回的预测器,元素必须包含数字标量、数字行向量或包含数字数组的1 × 1单元格数组。

响应的格式取决于任务的类型。

任务 回应的格式
Sequence-to-label分类 绝对标量
Sequence-to-one回归

标量

序列到矢量回归

数字行向量

Sequence-to-sequence分类

1 -年代分类标签序列,在哪里年代是相应的预测器序列的序列长度。

Sequence-to-sequence回归

R-经过-年代矩阵,R是多少回应和年代是相应的预测器序列的序列长度。

对于表中返回的响应,元素必须是类别标量、数字标量、数字行向量或包含数字数组的1 × 1单元格数组。

有关更多信息,请参见用于深度学习的数据存储

数字或单元数组

对于适用于内存的数据并且不需要其他处理如自定义转换,您可以将单个序列指定为数字数组或作为数字阵列的小区阵列的序列集的数据集。如果将序列指定为单元格或数字数组,则还必须指定反应论点。

对于单元格阵列输入,单元格数组必须是一个N-by-1数字数组单元格数组,其中N为观察次数。表示序列的数字数组的大小和形状取决于序列数据的类型:

输入 描述
矢量序列 c-经过-年代矩阵,c是序列的特征数量和年代为序列长度。
二维图像序列 h-经过-w-经过-c-经过-年代数组,hw, 和c对应于图像的高度,宽度和数量,以及年代为序列长度。
三维图像序列 h-经过-w-经过-d-经过-c-经过-年代, 在哪里hwd, 和c对应于3-D图像的高度,宽度,深度和数量,以及年代为序列长度。

提示

如果预测器或响应包含S,然后在训练期间通过网络传播。在这些情况下,训练通常不能收敛。

提示

对于回归任务,将反应正常化通常有助于稳定和加速训练。有关更多信息,请参见训练卷积神经网络用于回归

特征数据,指定为以下之一:

数据类型 描述 例用法
数据存储 TransformedDatastore 使用自定义转换函数转换从底层数据存储读取的数据批的数据存储。

  • 具有多个输入的列车网络。

  • 转换不支持的数据存储输出万博1manbetxtrainNetwork到有必要的格式。

  • 将自定义转换应用于数据存储输出。

ConventDatastore. 数据存储来自两个或多个底层数据存储。

  • 具有多个输入的列车网络。

  • 组合来自不同数据源的预测器和响应。

自定义迷你批量数据存储 返回小批量数据的自定义数据存储。

使用其他数据存储不支持的格式的数据训练神经网络。万博1manbetx

有关详细信息,请参见开发自定义小批量数据存储

表格 特征数据指定为表。如果您将功能指定为表,则还可以指定使用哪些列包含响应反应论点。 使用存储在表中的数据列车神经网络。
数字数组 指定为数字数组的特征数据。如果将特性指定为数字数组,则还必须指定反应论点。 使用适合内存的数据训练神经网络,不需要额外的处理,如自定义转换。

数据存储

数据存储读取特性数据和响应的小批量。当数据无法放入内存或希望对数据应用转换时,数据存储是最合适的。

下面的列表列出了直接兼容的数据存储trainNetwork对于特征数据。

可以使用其他内置数据存储来训练深度学习网络转变结合功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式trainNetwork.有关更多信息,请参见用于深度学习的数据存储

对于有多个输入的网络,数据存储必须是TransformedDatastore或者ConventDatastore.对象。

数据存储必须返回表或单元格数组中的数据。自定义小批处理数据存储必须输出表。数据存储输出的格式取决于网络架构。

网络体系结构 数据存储输出 示例输出
单个输入层

具有两列的表或单元格数组。

第一列和第二列分别指定预测器和响应。

表元素必须是标量、行向量或包含数字数组的1 × 1单元格数组。

自定义迷你批处理数据存储必须输出表。

一输入一输出网络表:

数据=读取(DS)
表= 4×2数据预测的反应  __________________ ________ { 24×1双}2{24×1双}7{24×1双}9{24×1双}9

一个输入一个输出的网络单元阵列:

数据=读取(DS)
Data = 4×2 cell array {24×1 double} {[2]} {24×1 double} {[7]} {24×1 double} {[9]} {24×1 double} {[9]}

多个输入层

细胞阵列与(numInputs+ 1)列,在哪里numInputs为网络输入的个数。

首先numInputs列为每个输入指定预测器,最后一列指定响应。

输入的顺序由InputNames层图的性质

单元阵列用于具有两个输入和一个输出的网络:

数据=读取(DS)
Data = 4×3 cell array {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[2]} {24×1 double} {28×1 double} {[9]} {24×1 double} {28×1 double} {[9]}

预测者肯定是c列向量,其中c是特征的数量。

响应的格式取决于任务的类型。

任务 回应的格式
分类 绝对标量
回归

  • 标量

  • 数值向量

有关更多信息,请参见用于深度学习的数据存储

表格

对于适合内存的功能数据并且不需要其他处理如自定义转换,可以指定要作为表的功能数据和响应。

表中的每一行都对应一个观察值。表列中预测器和响应的安排取决于任务的类型。

任务 预测 回应
功能分类

一个或多个列中指定的功能为标量。

如果不指定反应参数,那么预测器必须在第一个numfeatures.表的列,其中numfeatures.为输入数据的特征个数。

分类标签

特征回归

标量值的一列或多列

对于具有特征输入的分类网络,如果不指定反应参数,然后默认使用函数,使用第一个(numcolumns - 1)的列资源描述对于预测器和标签的最后一列,其中numfeatures.是输入数据中特征的数量。

对于具有特征输入的回归网络,如果不指定responseNames参数,那么函数,默认情况下,使用第一个numfeatures.预测器的列和响应的后续列,其中numfeatures.是输入数据中特征的数量。

数字数组

对于适合内存的功能数据并且不需要额外的处理如自定义转换,您可以将要素数据指定为数字数组。如果将要素数据指定为数字数组,则还必须指定反应论点。

数字数组必须是N-经过-numfeatures.数字数组,其中N观察的次数是多少numfeatures.为输入数据的特征个数。

提示

将反应归一化通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络用于回归

提示

响应必须不包含s.如果预测器数据包含,然后通过培训进行传播。然而,在大多数情况下,训练不能收敛。

回复。

当输入数据是单元格数组的数字数组时,将响应指定为下列响应之一。

  • 标签的分类向量

  • 数字响应的数字数组

  • 单元格数组分类或数字序列

当输入数据是一个表时,您可以选择指定表中的哪些列包含以下响应之一:

  • 字符向量

  • 字符向量的单元格阵列

  • 字符串数组

当输入数据是数字数组或单元格数组时,响应的格式取决于任务的类型。

任务 格式
分类 图像分类 N标签的分类向量,其中N为观察次数。
功能分类
Sequence-to-label分类
Sequence-to-sequence分类

N-by-1标签的分类序列单元格数组,其中N为观察次数。每个序列必须具有与相应的预测器序列相同的时间步骤。

对于单次观测的序列到序列分类任务,序列也可以是矢量。在这种情况下,Y必须是标签的分类序列。

回归 二维图像回归
  • N-经过-R矩阵,N是图像的数量和R是响应的数量。

  • h-经过-w-经过-c-经过-N数字数组,其中hw, 和c图像的高度、宽度和通道数量分别是和吗N为图像的个数。

三维图像回归
  • N-经过-R矩阵,N是图像的数量和R是响应的数量。

  • h-经过-w-经过-d-经过-c-经过-N数字数组,其中hwd, 和c图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。

特征回归

N-经过-R矩阵,N观察的次数是多少R是响应的数量。

Sequence-to-one回归 N-经过-R矩阵,N序列的个数是和吗R是响应的数量。
Sequence-to-sequence回归

N-by-1数字序列单元格数组,其中N是序列的数量。序列是矩阵R行,在哪里R是响应的数量。每个序列必须具有与相应的预测器序列相同的时间步骤。

对于单次观测的序列到序列回归任务,序列可以是一个矩阵。在这种情况下,反应一定是反应矩阵。

提示

将反应归一化通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络用于回归

提示

响应必须不包含s.如果预测器数据包含,然后通过培训进行传播。然而,在大多数情况下,训练不能收敛。

网络层,指定为阵列或A.LayerGraph对象。

要使用顺序连接的所有图层创建网络,可以使用a数组作为输入参数。在本例中,返回的网络为SeriesNetwork对象。

一条定向的非循环图(DAG)网络具有复杂的结构,其中层可以具有多个输入和输出。要创建DAG网络,请指定网络架构作为一个LayerGraph对象,然后使用该层图作为输入参数trainNetwork

有关内置图层列表,请参阅深度学习层名单

培训选项,指定为TrainingOptionsSGDM.TrainingOptionsRMSProp, 或者TrainingOptionsADAM对象返回的培训选项函数。

输出参数

全部折叠

训练有素的网络,作为一个返回SeriesNetwork对象或一个Dagnetwork.对象。

如果您使用a训练网络数组,然后是A.SeriesNetwork对象。如果您使用a训练网络LayerGraph对象,然后是A.Dagnetwork.对象。

训练信息,作为结构返回,其中每个字段是标量或数字向量,每个训练迭代包含一个元素。

对于分类任务,信息包含以下字段:

  • TrainingLoss-损失函数值

  • TrainingAccuracy- 训练精度

  • ValidationLoss-损失函数值

  • ValidationAccuracy——验证精度

  • 基准——学习利率

  • FinalValidationLoss-最终验证损失

  • FinalValidationAccuracy-最终验证精度

对于回归任务,信息包含以下字段:

  • TrainingLoss-损失函数值

  • 培训渣- 培训RMSE值

  • ValidationLoss-损失函数值

  • ValidationRMSE—验证RMSE值

  • 基准——学习利率

  • FinalValidationLoss-最终验证损失

  • FinalValidationRMSE-最终验证RMSE

该结构仅包含字段ValidationLossValidationAccuracyValidationRMSEFinalValidationLossFinalValidationAccuracyFinalValidationRMSE什么时候选项指定验证数据。的'验证职业'选择培训选项确定软件计算验证度量的迭代。最终的验证度量是标量。结构的其他字段是行向量,其中每个元素对应一个训练迭代。对于软件不计算验证度量的迭代,结构中相应的值是

如果您的网络包含批量归一化层,则最终验证度量通常与培训期间评估的验证度量不同。这是因为最终网络中的批量归一化层比在训练期间执行不同的操作。有关更多信息,请参见BatchnormalizationLayer.

更多关于

全部折叠

保存检查点网络和恢复培训

深度学习工具箱™使您可以在训练期间的每个纪元后将网络保存为。mat文件。当您拥有一个大型网络或大型数据集,并且训练需要很长时间时,这种定期保存特别有用。如果训练因某种原因中断,您可以从上次保存的检查点网络恢复训练。如果你想要trainNetwork要保存检查点网络,那么您必须使用使用方法指定路径的名称“CheckpointPath”名称 - 值对参数培训选项.如果指定的路径不存在,则培训选项返回错误。

trainNetwork自动为检查点网络文件分配唯一名称。在示例名称中,net_checkpoint__351__2018_04_12__18_09_52.Mat, 351是迭代数,2018年_04_12是日期,和18 _09_52时间是几点trainNetwork保存网络。您可以通过双击它或使用命令行中的Load命令加载检查点网络文件。例如:

负载net_checkpoint__351__2018_04_12__18_09_52.mat
然后,您可以通过使用网络的各层作为输入参数来恢复训练trainNetwork.例如:

Trainnetwork(Xtrain,Ytrain,Net.Layers,选项)
您必须手动指定训练选项和输入数据,因为检查点网络不包含这些信息。例如,请参见从检查站网络恢复培训

浮点算术

当您使用该网络训练网络时trainNetwork函数,或使用预测或验证函数时Dagnetwork.SeriesNetwork对象时,软件使用单精度浮点运算执行这些计算。用于训练、预测和验证的功能包括trainNetwork预测分类, 和激活.当你同时使用cpu和gpu训练网络时,该软件使用单精度算法。

兼容性的考虑

展开全部

从R2021a开始警告

参考文献

工藤,富山,新博。“使用通过区域的多维曲线分类”。模式识别字母.第20卷,第11-13期,第1103-1111页。

工藤,富山,新博。日本元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

扩展能力

介绍了R2016a