主要内容

trainNetwork

火车神经网络深入学习

描述

对于分类和回归任务,您可以使用trainNetwork为了培训用于图像数据的卷积神经网络(ConvNet,CNN),诸如序列数据的长短期存储器(LSTM)或门控复发单元(GU)网络的经常性神经网络(RNN),或者是多个 -用于数字特征数据的Layer Perceptron(MLP)网络。您可以在CPU或GPU上培训。对于图像分类和图像回归,您可以使用多个GPU或并行训练。使用GPU,Multi-GPU和并行选项需要并行计算工具箱™。要使用GPU进行深度学习,还必须有CUDA®启用nvidia.®GPU,计算能力3.0或更高。要指定培训选项,包括执行环境的选项,请使用培训选项函数。

例子

= trainnetwork(洛桑国际管理发展学院选项列车由指定的网络用于使用图像数据存储中的图像和标签的图像分类任务洛桑国际管理发展学院和培训选项定义选项

例子

= trainnetwork(ds选项使用数据存储返回的数据列车ds.对于具有多个输入的网络,使用该语法与数据存储返回多列的数据,例如组合数据存储。

例子

= trainnetwork(XY选项使用由数字数组指定的图像或特征数据训练网络X指定的分类或数字响应Y

例子

= trainnetwork(序列Y选项为指定的序列数据训练递归网络(例如LSTM或GRU网络)序列以及由Y

例子

= trainnetwork(TBL.选项使用表中的数据列车TBL.

= trainnetwork(TBL.响应选项使用表中的数据列车TBL.并指定包含响应的表列。

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

例子

全部收缩

将数据加载为ImageDatastore目的。

digitdatasetpath = fullfile(matlabroot,'工具箱'“nnet”...“nndemos”“nndatasets”'digitdataset');imds = imageageataStore(DigitDatasetPath,...'insertumbfolders',真的,...'labelsource'“foldernames”);

数据存储区包含从0到9的数字的10,000个合成图像。通过将随机变换应用于以不同字体创建的数字图像来生成图像。每个数字图像是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.进入两个新数据存储,Imdstrain.Inmdstest.

定义卷积神经网络架构。

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

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

选择= trainingOptions ('sgdm'...'maxepochs'20,...'italllearnrate',1e-4,...'verbose',错误的,...“阴谋”'培训 - 进步');

培训网络。

网= trainNetwork (imdsTrain层,选项);

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

Ypred =分类(网络,IMDSTEST);ytest = 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 (...'randroatation'(-20年,20),...“RandXTranslation”3 [3],...'randytranslation'3 [3])
Imageaugmenter = ImagedataAugmenter具有属性:FileValue:0 RandXreflection:0 Randyreflection:0 RandRotation:[-20 20] RANDSCALE:[1] RANDXSCALE:[1] RANDYSCALE:[1] RANDXSHEAR:[0] RANDYSHEAR:[00] RandXTranslation:[-3 3] RandyTranslation:[-3 3]

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

图像= [28 28 1];Augimds = AugmentedimageDataStore(图像化,Xtrain,Ytrain,“DataAugmentation”, imageAugmenter);

指定卷积神经网络架构。

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

用动量指定随机梯度下降的培训选项。

选择=培训选项('sgdm'...'maxepochs'15,...“洗牌”'每个时代'...“阴谋”'培训 - 进步'...'verbose',错误的,...'vightationdata', {XValidation, YValidation});

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

网= trainNetwork (augimds层,选择);

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

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

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

  • 1是通道的数量。

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

ytrain.包含度数的旋转角度。

[XTrain,〜,Ytrain] = Digittrain4darraydata;

显示20个随机训练图像imshow.

图numtrainimages = numel(ytrain);IDX = RANDPERM(NUMTRAIMIMAGES,20);为了i = 1:元素个数(idx)次要情节(4、5、i) imshow (XTrain (:,:,:, idx(我)))drawnow;结束

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

层= [...imageInputLayer([28 28 1])卷积2dlayer(12,25)rululayer全连接列(1)回归层];

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

选择= trainingOptions ('sgdm'...'italllearnrate',0.001,...'verbose',错误的,...“阴谋”'培训 - 进步');

培训网络。

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

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

[xtest,〜,ytest] = dimittest4darraydata;ypred =预测(net,xtest);

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

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

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

如[1]和[2]中所述加载日语元音数据集。XTrain是含有270个变化长度序列的细胞阵列,其具有对应于LPC综合系数的12个特征。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层和分类层。

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

指定培训选项。指定求解器为'亚当''gradientthreshold'作为1.将迷你批量尺寸设置为27并将最大数量的时期设置为70。

由于迷你批次具有短序列,因此CPU更适合培训。放“ExecutionEnvironment”“cpu”.在GPU上训练,如果有的话,设置“ExecutionEnvironment”“汽车”(默认值)。

maxEpochs = 70;miniBatchSize = 27个;选择= trainingOptions ('亚当'...“ExecutionEnvironment”“cpu”...'maxepochs',maxepochs,...“MiniBatchSize”,小匹马,...'gradientthreshold',1,...'verbose',错误的,...“阴谋”'培训 - 进步');

使用指定的训练选项训练LSTM网络。

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

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

[XTest,欧美]= japaneseVowelsTestData;

分类测试数据。指定用于培训的相同百分比大小。

XTest YPred =分类(净,“MiniBatchSize”, miniBatchSize);

计算预测的分类精度。

ACC = SUM(YPRED == ytest)./ numel(ytest)
ACC = 0.9514.

如果您有一个数字特征的数据集(例如没有空间或时间尺寸的数字数据集合),则可以使用特征输入层培训深度学习网络。

从CSV文件读取传输壳体数据“transactionscasingdata.csv”

文件名=“transactionscasingdata.csv”;台= readtable(文件名,“TextType”'细绳');

属性将用于预测的标签转换为分类的转录Vars.函数。

labelName =“齿轮技术”;tbl = convedvars(tbl,labelname,“分类”);

要使用分类功能培训网络,必须首先将分类功能转换为数字。首先,将分类预测因子转换为分类转录Vars.通过指定包含所有分类输入变量的名称的字符串数组。在此数据集中,有两个具有名称的分类功能“传感器”“shaftcondition”

categoricalInputNames = [“传感器”“shaftcondition”];台= convertvars(资源描述、categoricalInputNames“分类”);

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

  • 将分类值转换为使用的一个热编码向量onehotencode函数。

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

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

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

将向量分割成单独的列splitvars函数。

tbl = splitvars(tbl);

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

头(TBL)
ans =8×23表SigMean 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.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 =尺寸(tbl,2) -  1;numclasses = numel(classnames);图层= [FeatureInputLayer(NumFeatures,“归一化”“zscore”) fulllyconnectedlayer (50) batchNormalizationLayer relullayer fulllyconnectedlayer (numClasses) softmaxLayer classificationLayer];

指定培训选项。

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

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

网= trainNetwork (tblTrain层,选项);

使用培训的网络预测测试数据的标签并计算精度。准确性是网络正确预测的标签的比例。

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

输入参数

全部收缩

包含图像和标签的图像数据存储,指定为ImageDatastore目的。

属性创建一个映像数据存储imageageAtastore.函数。若要使用包含图像的文件夹的名称作为标签,请设置'labelsource'选项“foldernames”.方法手动指定标签标签图像数据存储的属性。

trainNetwork函数仅支持用于图像金宝app分类网络的图像数据存储。要为回归网络使用图像数据存储,请使用转变结合职能。有关更多信息,请参阅ds输入参数。

ImageDatastore允许批量读取JPG或PNG图像文件使用预取。如果您使用自定义函数来读取图像,那么ImageDatastore没有预取。

提示

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

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

用于内存不足的数据和预处理的数据存储。

下表列出了直接兼容的数据存储trainNetwork.您可以使用其他内置数据存储来培训深度学习网络转变结合职能。这些功能可以将从数据存储读取的数据转换为所需的表或单元格阵列格式trainNetwork.对于具有多个输入的网络,数据存储必须是组合或转换的数据存储,或自定义的迷你批处理数据存储。有关更多信息,请参见用于深度学习的数据存储

类型的数据存储 描述
ConventDatastore. 水平串联从两个或更多个底层数据存储读取的数据。
变换adatastore. 根据您自己的预处理管道从底层数据存储转换批读数据。
AugmentedimageGedataStore. 涂抹随机仿射几何变换,包括调整大小,旋转,反射,剪切和翻译,用于训练深神经网络。
PixelLabelImageDatastore(计算机视觉工具箱) 对图像应用相同的仿射几何变换和相应的地面真值标签来训练语义分割网络(需要Computer Vision Toolbox™)。
RandomPatchExtractionDatastore(图像处理工具箱) 从图像或像素标签图像中提取成对的随机补丁(需要图像处理工具箱™)。你也可以选择对这对补丁应用相同的随机仿射几何变换。
DenoisingImageDatastore(图像处理工具箱) 为培训去噪网络应用随机生成的高斯噪声(需要图像处理工具箱)。
自定义迷你批量数据存储 创建Mini-Batch的序列,时间序列,文本或特征数据。有关详细信息,请参见开发自定义迷你批处理数据存储

数据存储必须返回表或单元格数组中的数据。数据存储输出的格式取决于网络架构。

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

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

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

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

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

data =阅读(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
data =阅读(ds)
数据= 4×2单元阵列{224×224×3双} {[2]} {224×224×3双} {[7]} {224×224×3双} {[9]} {224×224×3双} {[9]}
多个输入层

单元格数组(numinputs.+ 1)列,其中numinputs.是网络输入的数量。

第一个numinputs.列为每个输入指定预测器,最后一列指定响应。

输入的顺序由输入名称层图的属性

data =阅读(ds)
数据= 4×3单元阵列{224×224×3双} {128×128×3双} {[2]} {224×224×3双} {128×128×3双} {[2]} {224×224×3双} {128×128×3双} {[9]} {224×224×3双} {128×128×3双} {[9]}

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

数据 预测器的格式
二维图像

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

3-D图像

h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,其中hwd, 和c是图像的高度,宽度,深度和图像的通道数。

矢量序列

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

二维图像序列

h——- - - - - -w——- - - - - -c——- - - - - -年代数组,hw, 和c对应于图像的高度,宽度和数量,并且年代是序列长度。

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

3-D图像序列

h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,hwd, 和c对应于图像的高度,宽度,深度和数量的图像,以及年代是序列长度。

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

特性

c列向量,其中c是特征的数量。

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

trainNetwork功能不支持具有多个序列输入图层的网络金宝app。

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

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

  • 标量子

  • 数值向量

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

Sequence-to-sequence分类

1-by-年代类别标签的序列,其中年代是相应的预测器序列的序列长度。

序列到序列回归

R——- - - - - -年代矩阵,R是响应的数量和年代是相应的预测器序列的序列长度。

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

图像或特征数据,指定为数字数组。数组的大小取决于输入的类型:

输入 描述
2-D图像 一个h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,其中hw, 和c图像的高度、宽度和通道数量分别是和吗N是图像的数量。
三维图像 一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,其中hwd, 和c是图像的高度,宽度,深度和图像通道数,以及N是图像的数量。
特性 一个N——- - - - - -numfeatures.数字数组,其中N是观察人数和numfeatures.是输入数据的功能数量。

如果数组包含,然后通过网络传播。

序列或时间序列数据,指定为一个N-1个数字阵列的1个单元阵列,其中N是观察的数量,或表示单个序列的数字数组。

对于单元格数组或数字数组输入,包含序列的数字数组的维数取决于数据类型。

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

要使用数据存储指定序列,请使用ds输入参数。

响应,指定为标签的分类向量,数字阵列,分类序列的小区阵列或数字序列的小区阵列。格式Y取决于任务的类型。答复不得包含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是图像的数量。

3-D图像回归
  • N——- - - - - -R矩阵,N是图像的数量和R为响应的数量。

  • h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,其中hwd, 和c是图像的高度,宽度,深度和图像通道数,以及N是图像的数量。

Sequence-to-one回归 N——- - - - - -R矩阵,N是序列的数量和R为响应的数量。
序列到序列回归

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

对于单次观测的序列到序列回归任务,序列可以是一个矩阵。在这种情况下,Y必须是答案的矩阵。

特征回归

N——- - - - - -R矩阵,N是观察人数和R为响应的数量。

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

输入数据,指定为包含预测器和响应的表。表中的每一行都对应一个观察值。

表列中预测器和响应的安排取决于任务的类型。

分类

任务 预测因子 回应
图像分类
  • 图像中的绝对或相对文件路径,指定为单列中的字符向量

  • 指定为包含3-D数字数组的1 × 1单元格数组的图像

预测器必须位于表的第一列中。

分类标签

Sequence-to-label分类

到包含序列或时间序列数据的MAT文件的绝对或相对文件路径。

垫文件必须包含由矩阵表示的时间序列,其中具有对应于与时间步长对应的数据点和列的行。

预测器必须位于表的第一列中。

分类标签

Sequence-to-sequence分类

垫文件的绝对或相对文件路径。MAT文件必须包含由分类向量表示的时间序列,其中每个时间步长对应于标签的条目。

功能分类

数字标量。

如果不指定响应参数,那么预测器必须在第一个numfeatures.桌子的列,在哪里numfeatures.是输入数据的功能数量。

分类标签

对于具有图像或序列输入的分类网络,如果您未指定响应,然后默认情况下,函数使用第一列TBL.为预测器和第二列作为标签。对于具有特征输入的分类网络,如果不指定响应参数,然后默认使用函数,使用第一个(numcolumns - 1)的列TBL.对于标签的预测器和最后一列,其中numfeatures.是输入数据中特征的数量。

回归

任务 预测因子 回应
图像回归

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

  • 指定为包含3-D数字数组的1 × 1单元格数组的图像

预测器必须位于表的第一列中。

  • 一个或多个标量值列

  • 数字行向量

  • 包含3-D数字数组的1 × 1单元阵列

Sequence-to-one回归

到包含序列或时间序列数据的MAT文件的绝对或相对文件路径。

垫文件必须包含由矩阵表示的时间序列,其中具有对应于与时间步长对应的数据点和列的行。

预测器必须位于表的第一列中。

  • 一个或多个标量值列

  • 数字行向量

序列到序列回归

垫文件的绝对或相对文件路径。垫文件必须包含由矩阵表示的时间序列,其中行对应于响应和列对应于时间步骤。

特征回归

在一个或多个列中作为标量指定的特性。

如果不指定响应参数,那么预测器必须在第一个numfeatures.桌子的列,在哪里numfeatures.是输入数据的功能数量。

一个或多个标量值列

对于带有图像或序列输入的回归网络,如果您没有指定响应,然后默认情况下,函数使用第一列TBL.将预测器和后续列作为响应。对于具有特征输入的回归网络,如果不指定响应参数,那么函数,默认情况下,使用第一个numfeatures.预测器的列和响应的后续列,其中numfeatures.是输入数据中特征的数量。

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

答复不能包含s。如果预测器数据包含S,然后他们通过训练传播。但是,在大多数情况下,培训未能收敛。

数据类型:桌子

输入表中的响应变量的名称,指定为以下之一:

  • 对于具有单一响应的分类或回归任务,响应必须是包含输入表中的响应变量的字符向量或字符串标量。

    对于具有多个响应的回归任务,响应必须是包含输入表中的响应变量的字符向量或字符向量的字符串数组。

数据类型:字符|细胞|字符串

网络图层,指定为a阵列或A.LayerGraph目的。

要使用顺序连接的所有图层创建网络,可以使用a数组作为输入参数。在这种情况下,返回的网络是一个SeriesNetwork目的。

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

有关内置层的列表,请参见深度学习层列表

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

输出参数

全部收缩

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

如果您使用a训练网络然后阵列是A.SeriesNetwork目的。如果您使用a训练网络LayerGraph对象,然后是A.Dagnetwork.目的。

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

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

  • 培训俱乐部- 损耗函数值

  • TrainingAccuracy- 训练精度

  • ValidationLoss- 损耗函数值

  • ValidationAccuracy——验证精度

  • 基准——学习利率

  • FinalDvalidationLoss.- 最终验证损失

  • FinalValidationAccuracy- 最终验证准确性

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

  • 培训俱乐部- 损耗函数值

  • TrainingRMSE- 培训RMSE值

  • ValidationLoss- 损耗函数值

  • ValidationRMSE—验证RMSE值

  • 基准——学习利率

  • FinalDvalidationLoss.- 最终验证损失

  • FinalValidationRmse.-最终验证RMSE

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

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

更多关于

全部收缩

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

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

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

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

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

浮点算术

深度学习培训,预测和深度学习工具箱中的验证的所有功能都使用单精度浮点算术执行计算。深度学习的功能包括trainNetwork预测分类, 和激活.当您使用CPU和GPU培训网络时,该软件使用单精度算术。

参考文献

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

[2] Kudo,M.,J. Toyama和M. Shimbo。日本元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

扩展能力

介绍了R2016a