主要内容

trainNetwork

为深度学习训练神经网络

描述

对于分类和回归任务,可以使用trainNetwork为图像数据训练卷积神经网络(ConvNet, CNN),为序列数据训练循环神经网络(RNN),如长短期记忆(LSTM)或门控循环单元(GRU)网络,或为数字特征数据训练多层感知器(MLP)网络。您可以在CPU或GPU上进行训练。对于图像分类和图像回归,可以使用多个gpu或并行进行训练。使用GPU,多GPU和并行选项需要并行计算工具箱™。要使用GPU进行深度学习,你还必须有一个CUDA®使英伟达®GPU具有3.0或更高的计算能力。若要指定培训选项,包括用于执行环境的选项,请使用trainingOptions函数。

例子

= trainNetwork (洛桑国际管理发展学院选项训练指定的网络用于图像分类任务,使用图像数据存储中的图像和标签洛桑国际管理发展学院以及由选项

例子

= trainNetwork (ds选项使用数据存储返回的数据训练网络ds.对于具有多个输入的网络,可以将此语法用于返回多列数据的数据存储,例如组合数据存储。

例子

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

例子

= trainNetwork (序列Y选项为指定的序列数据训练循环网络(例如LSTM或GRU网络)序列和由Y

例子

= trainNetwork (资源描述选项使用表中的数据训练网络资源描述

= trainNetwork (资源描述responseNames选项使用表中的数据训练网络资源描述并指定包含响应的表列。

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

例子

全部折叠

加载数据为ImageDatastore对象。

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

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

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

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

对数据存储进行划分,使训练集中的每个类别有750张图像,测试集中有每个标签的剩余图像。

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

splitEachLabel分割图像文件digitData到两个新的数据存储中,imdsTrain而且imdsTest

定义卷积神经网络架构。

层= [...imageInputLayer([28 28 1]) convolution2dLayer(5,20) reluLayer maxPooling2dLayer(2,“步”,2) fullyConnectedLayer(10) softmaxLayer classificationLayer];

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

选项= trainingOptions(“个”...“MaxEpochs”, 20岁,...“InitialLearnRate”1的军医,...“详细”假的,...“阴谋”“训练进步”);

培训网络。

net = trainNetwork(imdsTrain,layers,options);

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

YPred = category (net,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(size(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: FillValue: 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]

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

imageSize = [28 28 1];augimds = augmentedimagedastore (imageSize,XTrain,YTrain,“DataAugmentation”, imageAugmenter);

指定卷积神经网络架构。

图层= [imageInputLayer(imageSize)卷积2dlayer (3,8,“填充”“相同”maxPooling2dLayer(2,“步”2) convolution2dLayer(16日“填充”“相同”maxPooling2dLayer(2,“步”32岁的,2)convolution2dLayer (3“填充”“相同”batchNormalizationLayer reluLayer fullyConnectedLayer(10) softmaxLayer classificationLayer];

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

opts = trainingOptions(“个”...“MaxEpochs”15岁的...“洗牌”“every-epoch”...“阴谋”“训练进步”...“详细”假的,...“ValidationData”, {XValidation, YValidation});

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

net = trainNetwork(augimds,layers,opts);

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

使用4-D数组加载训练图像digitTrain4DArrayData.输出XTrain是一个28 × 28 × 1 × 5000的数组,其中:

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

  • 1是通道数。

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

YTrain包含以度为单位的旋转角度。

[XTrain,~,YTrain] = digitTrain4DArrayData;

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

figure numTrainImages = numel(YTrain);idx = randperm(numTrainImages,20);i = 1:元素个数(idx)次要情节(4、5、i) imshow (XTrain (:,:,:, idx(我)))drawnow;结束

指定卷积神经网络架构。对于回归问题,在网络的末端包含一个回归层。

层= [...imageInputLayer([28 28 1]) convolution2dLayer(12,25) reluLayer fullyConnectedLayer(1) regressionLayer];

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

选项= trainingOptions(“个”...“InitialLearnRate”, 0.001,...“详细”假的,...“阴谋”“训练进步”);

培训网络。

net = trainNetwork(XTrain,YTrain,图层,选项);

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

[XTest,~,YTest] = digitTest4DArrayData;YPred = predict(net,XTest);

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

rmse =√(mean(YTest - YPred).^2))
rmse =6.0356

训练深度学习LSTM网络进行序列到标签分类。

按照[1]和[2]中的描述加载Japanese Vowels数据集。XTrain是包含270个不同长度序列的单元阵列,其中12个特征对应于LPC倒谱系数。Y是标签1,2,…,9的分类向量。中的条目XTrain是有12行(每个特征一行)和不同数量列(每个时间步骤一列)的矩阵。

[XTrain,YTrain] =日本evowelstraindata;

把第一个时间序列想象成一个图形。每一行对应一个特征。

图形图(XTrain{1}')“训练观察1”) numFeatures = size(XTrain{1},1);传奇(“特性”+字符串(1:numFeatures),“位置”“northeastoutside”

定义LSTM网络体系结构。将输入大小指定为12(输入数据的特征数量)。指定一个LSTM层有100个隐藏单元,并输出序列的最后一个元素。最后,指定9个类,包括大小为9的全连接层,然后是softmax层和分类层。

inputSize = 12;numHiddenUnits = 100;numClasses = 9;层= [...sequenceInputLayer inputSize lstmLayer (numHiddenUnits,“OutputMode”“最后一次”fullyConnectedLayer(numClasses) softmaxLayer classificationLayer
layers = 5×1带有图层的层数组:1 " Sequence Input 12维序列输入2 " LSTM LSTM带有100个隐藏单元3 "全连接9全连接层4 " Softmax Softmax 5 " Classification Output crossentropyex

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

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

maxEpochs = 70;miniBatchSize = 27;选项= trainingOptions(“亚当”...“ExecutionEnvironment”“cpu”...“MaxEpochs”maxEpochs,...“MiniBatchSize”miniBatchSize,...“GradientThreshold”,1,...“详细”假的,...“阴谋”“训练进步”);

使用指定的培训选项对LSTM网络进行培训。

net = trainNetwork(XTrain,YTrain,图层,选项);

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

[XTest,YTest] =日本evowelstestdata;

分类测试数据。指定用于训练的相同的小批大小。

YPred = category (net,XTest,“MiniBatchSize”, miniBatchSize);

计算预测的分类精度。

acc = sum(YPred == YTest)./ nummel (YTest)
Acc = 0.9514

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

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

文件名=“transmissionCasingData.csv”;TBL =可读(文件名,“TextType”“字符串”);

属性将预测标签转换为分类标签convertvars函数。

labelName =“GearToothCondition”;tbl = convertvars(tbl,labelName,“分类”);

要使用分类特征训练网络,首先必须将分类特征转换为数字。方法将类别预测符转换为类别预测符convertvars通过指定包含所有类别输入变量名称的字符串数组来实现。在这个数据集中,有两个带有名称的分类特征“SensorCondition”而且“ShaftCondition”

categoricalInputNames = [“SensorCondition”“ShaftCondition”];tbl = convertvars(tbl,categoricalInputNames,“分类”);

遍历分类输入变量。对于每个变量:

  • 类将类别值转换为单热编码向量onehotencode函数。

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

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

i = 1:numel(categoricalInputNames) name = categoricalInputNames(i);Oh = onehotencode(tbl(:,name));TBL = addvars(TBL,哦,“后”、名称);Tbl (:,name) = [];结束

方法将向量拆分为单独的列splitvars函数。

TBL =分裂(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 01 10无齿故障-0.97537 -0.98958 1.3937 0.99105 0.81571 3.6314 -0.023777 2.2598 2.0203 0.81017 29418 1.1362 0.037835 70.325 0 5.08e-08 9.16e-08 226.12 01 10无齿故障1.0502 1.0267 1.4449 0.98491 3.6314 -0.04162 2.2658 1.9487 0.80853 31710 1.14790.031565 - 125.19 6.74 2.85 e-06 e-07 162.13 0 1 0 1没有牙齿错1.0227 1.0045 1.4288 0.99553 2.8157 3.6314 -0.016356 2.2483 1.9707 0.81324 30984 1.1472 0.032088 112.5 4.99 e-06 2.4 e-07 162.13 0 1 0 1没有牙齿错1.0123 1.0024 1.4202 0.99233 2.8157 3.6314 -0.014701 2.2542 1.9826 0.81156 30661 1.1469 0.03287 108.86 3.62 e-06 2.28 e-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 1.65 0.81589 1.0985 0.033427 64.576 31102 0 2.55 e-06 e-07 230.3901 01牙号故障1.0464 1.0275 1.4477 1.0011 2.8157 3.6314 -0.042849 2.2455 1.9449 0.81595 31665 1.1417 0.034159 98.838 0 1.73e-06 1.55e-07 230.39 01 01牙号故障1.0459 1.0257 1.4402 0.98047 2.8157 3.6314 -0.035405 2.2757 1.955 0.80583 31554 1.1345 0.0353 44.223 0 1.11e-06 1.39e-07 230.39 01 011牙号故障

查看数据集的类名。

classNames =类别(tbl{:,labelName})
一会=2×1细胞{“没有牙齿故障”}{“牙齿故障”}

接下来,将数据集划分为训练分区和测试分区。留出15%的数据用于测试。

确定每个分区的观察数。

numObservations = size(tbl,1);numObservationsTrain = floor(0.85*numObservations);numObservationsTest = numObservations - numObservationsTrain;

创建一个与观察结果对应的随机索引数组,并使用分区大小对其进行分区。

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

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

tblTrain = tbl(idxTrain,:);tblTest = tbl(idxTest,:);

定义一个带有特征输入层的网络,并指定特征的数量。此外,配置输入层以使用Z-score规范化对数据进行规范化。

numFeatures = size(tbl,2) - 1;numClasses = numel(classNames);layers = [featureInputLayer(numFeatures,“归一化”“zscore”) fullyConnectedLayer(50) batchNormalizationLayer reluLayer fullyConnectedLayer(numClasses) softmaxLayer classificationLayer];

指定培训选项。

miniBatchSize = 16;选项= trainingOptions(“亚当”...“MiniBatchSize”miniBatchSize,...“洗牌”“every-epoch”...“阴谋”“训练进步”...“详细”、假);

使用定义的体系结构训练网络、训练数据和训练选项。

net = trainNetwork(tblTrain,layers,options);

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

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

输入参数

全部折叠

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

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

trainNetwork函数只支持图像分类金宝app网络的图像数据存储。要将图像数据存储用于回归网络,请使用变换而且结合功能。有关更多信息,请参见ds输入参数。

ImageDatastore允许批量读取JPG或PNG图像文件使用预取。如果使用自定义函数读取图像,则ImageDatastore不预取。

提示

使用augmentedImageDatastore用于深度学习图像的有效预处理,包括图像大小调整。

请勿使用readFcn选择imageDatastore用于预处理或调整大小,因为此选项通常显着较慢。

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

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

数据存储类型 描述
CombinedDatastore 水平连接从两个或多个底层数据存储读取的数据。
TransformedDatastore 根据自己的预处理管道转换来自底层数据存储的批读数据。
AugmentedImageDatastore 应用随机仿射几何变换,包括调整大小、旋转、反射、剪切和平移,用于训练深度神经网络。
PixelLabelImageDatastore(计算机视觉工具箱) 将相同的仿射几何变换应用于图像和相应的地面真理标签,用于训练语义分割网络(需要计算机视觉工具箱™)。
RandomPatchExtractionDatastore(图像处理工具箱) 从图像或像素标签图像中提取随机补丁对(需要图像处理工具箱™)。您还可以选择对补丁对应用相同的随机仿射几何变换。
DenoisingImageDatastore(图像处理工具箱) 应用随机生成的高斯噪声训练去噪网络(需要图像处理工具箱)。
自定义小批量数据存储 创建小批量的序列、时间序列、文本或特征数据。详细信息请参见开发自定义小批量数据存储

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

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

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

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

表元素必须是标量、行向量或包含数字数组的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 . data = 4×2 table Predictors Response
数据=读取(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)
数据= 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分别是图像的高度、宽度和通道数。

三维图像

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

向量序列

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

二维图像序列

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

小批中的每个序列必须具有相同的序列长度。

三维图像序列

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

小批中的每个序列必须具有相同的序列长度。

特性

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

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

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

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

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

  • 标量

  • 数值向量

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

Sequence-to-sequence分类

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

Sequence-to-sequence回归

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

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

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

输入 描述
二维图像 一个h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,其中hw,c图像的高度、宽度和通道数分别是和N是图像的数量。
三维图像 一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,其中hwd,c图像的高度、宽度、深度和通道数分别为和N是图像的数量。
特性 一个N——- - - - - -numFeatures数字数组,其中N观察的次数和numFeatures输入数据的特征数。

如果数组包含S,然后它们在网络中传播。

序列或时间序列数据,指定为N-by-1单元格数组的数值数组,其中N观测值的数目,或表示单个序列的数值数组。

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

输入 描述
向量序列 c——- - - - - -年代矩阵,c序列特征的数量和年代是序列长度。
二维图像序列 h——- - - - - -w——- - - - - -c——- - - - - -年代数组,hw,c分别对应图像的高度、宽度和通道数,和年代是序列长度。
三维图像序列 h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里hwd,c分别对应三维图像的高度、宽度、深度和通道数,和年代是序列长度。

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

响应,指定为标签的分类向量、数字数组、分类序列的单元格数组或数字序列的单元格数组。的格式Y这取决于任务的类型。响应不能包含年代。

分类

任务 格式
图像或特征分类 N-by-1的标签分类向量,其中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是图像的数量。

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

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

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

功能回归

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

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

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

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

分类

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

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

预测符必须在表的第一列中。

分类标签

Sequence-to-label分类

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

MAT文件必须包含由矩阵表示的时间序列,该矩阵的行对应于数据点,列对应于时间步长。

预测符必须在表的第一列中。

分类标签

Sequence-to-sequence分类

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

功能分类

数字标量。

如果没有指定responseNames参数,那么预测符必须在第一个numFeatures表的列,其中numFeatures输入数据的特征数。

分类标签

对于有图像或序列输入的分类网络,如果不指定responseNames的第一列,则该函数默认使用资源描述对于预测器和第二列作为标签。对于带有特征输入的分类网络,如果不指定responseNames参数,则该函数默认使用第一个(numColumns - 1)列资源描述对于预测器和标签的最后一列,其中numFeatures输入数据中特征的数量。

回归

任务 预测 反应
形象回归

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

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

预测符必须在表的第一列中。

  • 一列或多列标量值

  • 数字行向量

  • 包含三维数值数组的1乘1单元格数组

Sequence-to-one回归

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

MAT文件必须包含由矩阵表示的时间序列,该矩阵的行对应于数据点,列对应于时间步长。

预测符必须在表的第一列中。

  • 一列或多列标量值

  • 数字行向量

Sequence-to-sequence回归

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

功能回归

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

如果没有指定responseNames参数,那么预测符必须在第一个numFeatures表的列,其中numFeatures输入数据的特征数。

一列或多列标量值

对于带有图像或序列输入的回归网络,如果没有指定responseNames的第一列,则该函数默认使用资源描述将预测器和后续列作为响应。对于带有特征输入的回归网络,如果不指定responseNames参数,则函数默认使用第一个numFeatures预测器的列和响应的后续列,其中numFeatures输入数据中特征的数量。

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

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

数据类型:表格

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

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

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

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

网络层,指定为a数组或LayerGraph对象。

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

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

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

培训选项,指定为TrainingOptionsSGDMTrainingOptionsRMSProp,或TrainingOptionsADAM对象返回的trainingOptions函数。

输出参数

全部折叠

受过训练的网络,还不如一个SeriesNetwork对象或DAGNetwork对象。

如果你训练网络使用数组,然后是一个SeriesNetwork对象。如果你训练网络使用LayerGraph对象,然后是一个DAGNetwork对象。

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

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

  • TrainingLoss-损失函数值

  • TrainingAccuracy-培训准确性

  • ValidationLoss-损失函数值

  • ValidationAccuracy-验证精度

  • BaseLearnRate-学习率

  • FinalValidationLoss-最终验证损失

  • FinalValidationAccuracy-最终验证精度

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

  • TrainingLoss-损失函数值

  • TrainingRMSE-培训RMSE值

  • ValidationLoss-损失函数值

  • ValidationRMSE-验证RMSE值

  • BaseLearnRate-学习率

  • FinalValidationLoss-最终验证损失

  • FinalValidationRMSE-最终验证RMSE

该结构只包含字段ValidationLossValidationAccuracyValidationRMSEFinalValidationLossFinalValidationAccuracy而且FinalValidationRMSE选项指定验证数据。的“ValidationFrequency”选择trainingOptions确定软件计算验证指标的迭代。最终的验证指标是标量。结构的其他字段是行向量,其中每个元素对应于一个训练迭代。对于软件不计算验证度量的迭代,结构中对应的值为

如果您的网络包含批处理归一化层,则最终验证指标通常与训练期间评估的验证指标不同。这是因为最终网络中的批处理归一化层执行不同于训练期间的操作。有关更多信息,请参见batchNormalizationLayer

更多关于

全部折叠

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

深度学习工具箱™使您能够在训练期间的每个纪元后将网络保存为.mat文件。当你有一个大的网络或大的数据集,并且训练需要很长时间时,这种周期性的保存尤其有用。如果训练因某种原因中断,您可以从最后保存的检查点网络恢复训练。如果你愿意trainNetwork属性指定路径名,以保存检查点网络“CheckpointPath”的名称-值对参数trainingOptions.如果指定的路径不存在,则trainingOptions返回一个错误。

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选项)
您必须手动指定训练选项和输入数据,因为检查点网络不包含这些信息。有关示例,请参见从Checkpoint Network恢复培训

浮点算术

“深度学习工具箱”中用于深度学习训练、预测和验证的所有函数都使用单精度浮点算法执行计算。用于深度学习的函数包括trainNetwork预测分类,激活.当您使用cpu和gpu训练网络时,该软件使用单精度算法。

参考文献

[1]工藤,M.,富山,M. Shimbo。“使用穿过区域的多维曲线分类”模式识别信.第20卷,第11-13号,第1103-1111页。

[2]工藤,M.,富山,M. Shimbo。日语元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels

扩展功能

在R2016a中引入