trainNetwork
为深度学习训练神经网络
语法
描述
对于分类和回归任务,可以使用trainNetwork
为图像数据训练卷积神经网络(ConvNet, CNN),为序列数据训练循环神经网络(RNN),如长短期记忆(LSTM)或门控循环单元(GRU)网络,或为数字特征数据训练多层感知器(MLP)网络。您可以在CPU或GPU上进行训练。对于图像分类和图像回归,可以使用多个gpu或并行进行训练。使用GPU,多GPU和并行选项需要并行计算工具箱™。要使用GPU进行深度学习,你还必须有一个CUDA®使英伟达®GPU具有3.0或更高的计算能力。若要指定培训选项,包括用于执行环境的选项,请使用trainingOptions
函数。
训练指定的网络网
= trainNetwork (洛桑国际管理发展学院
,层
,选项
)层
用于图像分类任务,使用图像数据存储中的图像和标签洛桑国际管理发展学院
以及由选项
.
使用表中的数据训练网络网
= trainNetwork (资源描述
,responseNames
,层
,选项
)资源描述
并指定包含响应的表列。
例子
图像分类训练网络
加载数据为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
对象。
方法创建映像数据存储imageDatastore
函数。要使用包含图像的文件夹的名称作为标签,请设置“LabelSource”
选项“foldernames”
.方法手动指定标签标签
映像数据存储的属性。
的trainNetwork
函数只支持图像分类金宝app网络的图像数据存储。要将图像数据存储用于回归网络,请使用变换
而且结合
功能。有关更多信息,请参见ds
输入参数。
ImageDatastore
允许批量读取JPG或PNG图像文件使用预取。如果使用自定义函数读取图像,则ImageDatastore
不预取。
提示
使用augmentedImageDatastore
用于深度学习图像的有效预处理,包括图像大小调整。
请勿使用readFcn
选择imageDatastore
用于预处理或调整大小,因为此选项通常显着较慢。
ds
- - - - - -数据存储
数据存储
内存不足数据和预处理的数据存储。
下表列出了与之直接兼容的数据存储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]} |
||
多个输入层 | 单元格数组( 第一个 输入的顺序由 |
数据=读取(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数字数组,其中h,w,c分别是图像的高度、宽度和通道数。 |
三维图像 | h——- - - - - -w——- - - - - -d——- - - - - -c数字数组,其中h,w,d,c分别是图像的高度、宽度、深度和通道数。 |
向量序列 | c——- - - - - -年代矩阵,c序列的特征数和年代是序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c分别对应图像的高度、宽度和通道数,和年代是序列长度。 小批中的每个序列必须具有相同的序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代数组,h,w,d,c分别对应图像的高度、宽度、深度和通道数,和年代是序列长度。 小批中的每个序列必须具有相同的序列长度。 |
特性 | c-by-1列向量,其中c是特征的数量。 |
对于表中返回的预测器,元素必须包含数字标量、数字行向量或包含数字数组的1乘1单元格数组。
的trainNetwork
函数不支持具有多个序列输入层的网络。金宝app
响应的格式取决于任务的类型。
任务 | 回应格式 |
---|---|
分类 | 绝对标量 |
回归 |
|
Sequence-to-sequence分类 | 1 -年代分类标签序列,其中年代是对应预测器序列的序列长度。 |
Sequence-to-sequence回归 | R——- - - - - -年代矩阵,R回复的数量和年代是对应预测器序列的序列长度。 |
对于表中返回的响应,元素必须是分类标量、数字标量、数字行向量或包含数字数组的1乘1单元格数组。
X
- - - - - -图像或特征数据
数字数组
图像或特征数据,指定为数字数组。数组的大小取决于输入的类型:
输入 | 描述 |
---|---|
二维图像 | 一个h——- - - - - -w——- - - - - -c——- - - - - -N数字数组,其中h,w,c图像的高度、宽度和通道数分别是和N是图像的数量。 |
三维图像 | 一个h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -N数字数组,其中h,w,d,c图像的高度、宽度、深度和通道数分别为和N是图像的数量。 |
特性 | 一个N——- - - - - -numFeatures 数字数组,其中N观察的次数和numFeatures 输入数据的特征数。 |
如果数组包含南
S,然后它们在网络中传播。
序列
- - - - - -序列或时间序列数据
数值数组的单元格数组|数字数组
序列或时间序列数据,指定为N-by-1单元格数组的数值数组,其中N观测值的数目,或表示单个序列的数值数组。
对于单元格数组或数值数组输入,包含序列的数值数组的维数取决于数据的类型。
输入 | 描述 |
---|---|
向量序列 | c——- - - - - -年代矩阵,c序列特征的数量和年代是序列长度。 |
二维图像序列 | h——- - - - - -w——- - - - - -c——- - - - - -年代数组,h,w,c分别对应图像的高度、宽度和通道数,和年代是序列长度。 |
三维图像序列 | h——- - - - - -w——- - - - - -d——- - - - - -c——- - - - - -年代,在那里h,w,d,c分别对应三维图像的高度、宽度、深度和通道数,和年代是序列长度。 |
要使用数据存储指定序列,请使用ds
输入参数。
Y
- - - - - -反应
标签的分类向量|数字数组|分类序列的单元数组|数值序列的单元格数组
响应,指定为标签的分类向量、数字数组、分类序列的单元格数组或数字序列的单元格数组。的格式Y
这取决于任务的类型。响应不能包含南
年代。
分类
任务 | 格式 |
---|---|
图像或特征分类 | N-by-1的标签分类向量,其中N是观测的数量。 |
Sequence-to-label分类 | |
Sequence-to-sequence分类 | N标签分类序列的-by-1单元格数组,其中N是观测的数量。每个序列必须与相应的预测序列具有相同数量的时间步长。 对于单次观测的序列到序列分类任务, |
回归
任务 | 格式 |
---|---|
二维图像回归 |
|
三维图像回归 |
|
Sequence-to-one回归 | N——- - - - - -R矩阵,N序列数是和吗R是响应的数量。 |
Sequence-to-sequence回归 | N-by-1单元数组的数值序列,其中N是序列的个数。序列是矩阵R行,R是响应的数量。每个序列必须与相应的预测序列具有相同数量的时间步长。 对于只有一次观测的序列到序列的回归任务, |
功能回归 | N——- - - - - -R矩阵,N观察的次数和R是响应的数量。 |
常态化响应通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络回归.
资源描述
- - - - - -输入数据
表格
输入数据,指定为包含预测器和响应的表。表中的每一行都对应一个观察值。
表列中预测器和响应的排列取决于任务的类型。
分类
任务 | 预测 | 反应 |
---|---|---|
图像分类 |
预测符必须在表的第一列中。 |
分类标签 |
Sequence-to-label分类 | 包含序列或时间序列数据的MAT文件的绝对或相对文件路径。 MAT文件必须包含由矩阵表示的时间序列,该矩阵的行对应于数据点,列对应于时间步长。 预测符必须在表的第一列中。 |
分类标签 |
Sequence-to-sequence分类 | MAT文件的绝对或相对文件路径。MAT文件必须包含一个由分类向量表示的时间序列,其中的条目对应于每个时间步骤的标签。 |
|
功能分类 | 数字标量。 如果没有指定 |
分类标签 |
对于有图像或序列输入的分类网络,如果不指定responseNames
的第一列,则该函数默认使用资源描述
对于预测器和第二列作为标签。对于带有特征输入的分类网络,如果不指定responseNames
参数,则该函数默认使用第一个(numColumns - 1
)列资源描述
对于预测器和标签的最后一列,其中numFeatures
输入数据中特征的数量。
回归
任务 | 预测 | 反应 |
---|---|---|
形象回归 |
预测符必须在表的第一列中。 |
|
Sequence-to-one回归 | 包含序列或时间序列数据的MAT文件的绝对或相对文件路径。 MAT文件必须包含由矩阵表示的时间序列,该矩阵的行对应于数据点,列对应于时间步长。 预测符必须在表的第一列中。 |
|
Sequence-to-sequence回归 | MAT文件的绝对或相对文件路径。MAT文件必须包含由矩阵表示的时间序列,其中行对应响应,列对应时间步长。 |
|
功能回归 | 在一个或多个列中作为标量指定的特性。 如果没有指定 |
一列或多列标量值 |
对于带有图像或序列输入的回归网络,如果没有指定responseNames
的第一列,则该函数默认使用资源描述
将预测器和后续列作为响应。对于带有特征输入的回归网络,如果不指定responseNames
参数,则函数默认使用第一个numFeatures
预测器的列和响应的后续列,其中numFeatures
输入数据中特征的数量。
常态化响应通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络回归.
响应不能包含南
s.如果预测器数据包含南
S,然后通过训练进行传播。然而,在大多数情况下,训练不能收敛。
数据类型:表格
responseNames
- - - - - -输入表中响应变量的名称
特征向量|字符向量的单元格数组|字符串数组
输入表中响应变量的名称,指定为以下之一:
对于只有单一响应的分类或回归任务,
responseNames
必须是输入表中包含响应变量的字符向量或字符串标量。对于有多个响应的回归任务,
responseNames
必须是包含输入表中响应变量的字符向量的字符串数组或单元格数组。
数据类型:字符
|细胞
|字符串
层
- - - - - -网络层
层
数组|LayerGraph
对象
网络层,指定为a层
数组或LayerGraph
对象。
要创建所有层按顺序连接的网络,可以使用层
数组作为输入参数。在本例中,返回的网络是aSeriesNetwork
对象。
有向无环图(DAG)网络具有复杂的结构,其中各层可以有多个输入和输出。如果要创建DAG网络,请将网络架构指定为LayerGraph
对象,然后使用该层图作为输入参数trainNetwork
.
有关内置层的列表,请参见深度学习层列表.
选项
- - - - - -培训方案
TrainingOptionsSGDM
|TrainingOptionsRMSProp
|TrainingOptionsADAM
培训选项,指定为TrainingOptionsSGDM
,TrainingOptionsRMSProp
,或TrainingOptionsADAM
对象返回的trainingOptions
函数。
输出参数
网
-训练过的网络
SeriesNetwork
对象|DAGNetwork
对象
受过训练的网络,还不如一个SeriesNetwork
对象或DAGNetwork
对象。
如果你训练网络使用层
数组,然后网
是一个SeriesNetwork
对象。如果你训练网络使用LayerGraph
对象,然后网
是一个DAGNetwork
对象。
信息
-培训信息
结构
训练信息,作为结构返回,其中每个字段是一个标量或一个数字向量,每次训练迭代有一个元素。
对于分类任务,信息
包含以下字段:
TrainingLoss
-损失函数值TrainingAccuracy
-培训准确性ValidationLoss
-损失函数值ValidationAccuracy
-验证精度BaseLearnRate
-学习率FinalValidationLoss
-最终验证损失FinalValidationAccuracy
-最终验证精度
对于回归任务,信息
包含以下字段:
TrainingLoss
-损失函数值TrainingRMSE
-培训RMSE值ValidationLoss
-损失函数值ValidationRMSE
-验证RMSE值BaseLearnRate
-学习率FinalValidationLoss
-最终验证损失FinalValidationRMSE
-最终验证RMSE
该结构只包含字段ValidationLoss
,ValidationAccuracy
,ValidationRMSE
,FinalValidationLoss
,FinalValidationAccuracy
而且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选项)
浮点算术
“深度学习工具箱”中用于深度学习训练、预测和验证的所有函数都使用单精度浮点算法执行计算。用于深度学习的函数包括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
扩展功能
自动平行支撑金宝app
通过使用并行计算工具箱™自动并行运行计算来加速代码。
要并行运行计算,请设置“ExecutionEnvironment”
选项“multi-gpu”
或“平行”
.
使用trainingOptions
设置“ExecutionEnvironment”
并提供选项
来trainNetwork
.如果不设置“ExecutionEnvironment”
,然后trainNetwork
运行在GPU上(如果可用的话)。
详细信息请参见并行和云中扩展深度学习.
另请参阅
analyzeNetwork
|assembleNetwork
|分类
|DAGNetwork
|深度网络设计器|LayerGraph
|预测
|SeriesNetwork
|trainingOptions
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。