训练深度学习神经网络
对于分类和回归任务,您可以使用trainNetwork
函数。
例如,你可以培训:
图像数据的卷积神经网络(ConvNet,CNN)
诸如长短期存储器(LSTM)的经常性神经网络(RNN)或用于序列和时间序列数据的GED门控复发单元(GRU)网络
用于数值特征数据的多层感知器(MLP)网络
您可以在CPU或GPU上培训。对于图像分类和图像回归,您可以使用多个GPU或本地或远程并行池并行培训单个网络。在GPU或并行训练需要并行计算工具箱™。要使用GPU进行深度学习,您还必须有支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU通万博1manbetx过发布支持(并行计算工具箱).要指定培训选项,包括执行环境的选项,请使用培训选项
函数。
在训练神经网络时,可以将预测器和响应指定为单个输入或两个单独的输入。
将数据加载为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.
存入两个新的数据存储,imdsTrain
和imdsTest
.
定义卷积神经网络结构。
层= [...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 |
应用随机仿射几何转换(包括调整大小、旋转、反射、剪切和平移)的数据存储。 |
|
|
TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的数据批的数据存储。 |
|
|
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]} |
||
多个输入层 | 细胞阵列与( 首先 输入的顺序由 |
单元阵列用于具有两个输入和一个输出的网络。 数据=读取(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数字数组,其中h,w, 和c是图像的高度,宽度和数量分别。 |
3-D图像 | h-经过-w-经过-d-经过-c数字数组,其中h,w,d, 和c分别为图像的高度、宽度、深度和通道数量。 |
对于在表中返回的预测器,元素必须包含数字标量,数字行向量或包含数字数组的1-1个单元格数组。
响应的格式取决于任务的类型。
任务 | 响应格式 |
---|---|
图像分类 | 绝对标量 |
形象回归 |
|
对于表中返回的响应,元素必须是类别标量、数字标量、数字行向量或包含数字数组的1 × 1单元格数组。
有关更多信息,请参见用于深度学习的数据存储.
对于适用于内存的数据并且不需要增加的其他处理,您可以将数据集指定为数字数组。如果指定图像为数字数组,则还必须指定反应
论点。
数字数组的大小和形状取决于图像数据的类型。
数据 | 格式 |
---|---|
二维图像 | h-经过-w-经过-c-经过-N数字数组,其中h,w, 和c图像的高度、宽度和通道数量分别是和吗N为图像的个数。 |
3-D图像 | h-经过-w-经过-d-经过-c-经过-N数字数组,其中h,w,d, 和c图像的高度、宽度、深度和通道数量分别是和吗N为图像的个数。 |
作为数据存储或数字数组的替代方案,您还可以在表中指定图像和响应。如果将图像指定为表,则还可以使用反应
论点。
在表中指定图像和响应时,表中的每一行都对应一个观察结果。
对于图像输入,预测器必须在表的第一列,指定为以下之一:
指定为字符向量的图像的绝对或相对文件路径
包含a的1×1个单元阵列h-经过-w-经过-c数字数组表示2-D图像,其中h,w, 和c分别对应于图像的高度、宽度和通道数量。
响应的格式取决于任务的类型。
任务 | 响应格式 |
---|---|
图像分类 | 绝对标量 |
形象回归 |
|
对于具有图像输入的神经网络,如果您没有指定反应
,则该函数在默认情况下使用的第一列资源描述
将预测器和后续列作为响应。
提示
如果预测器或响应包含南
S,然后在训练期间通过网络传播。在这些情况下,训练通常不能收敛。
提示
对于回归任务,将反应归一化通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络用于回归.
序列
- - - - - -序列或时间序列数据序列或时间序列数据,指定为下列数据之一:
数据类型 | 描述 | 例用法 | |
---|---|---|---|
数据存储 | TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的数据批的数据存储。 |
|
ConventDatastore. |
数据存储来自两个或多个底层数据存储。 | 组合来自不同数据源的预测器和响应。 |
|
自定义迷你批量数据存储 | 返回小批量数据的自定义数据存储。 | 使用其他数据存储不支持的格式的数据训练神经网络。万博1manbetx 有关详细信息,请参见开发自定义小批量数据存储. |
|
数字或单元数组 | 指定为数字数组的单个序列,或指定为数字数组的单元格数组的序列数据集。如果将序列指定为数字或单元格数组,则还必须指定反应 论点。 |
使用适合内存的数据训练神经网络,不需要额外的处理,如自定义转换。 |
数据存储读取小批次序列和响应。当数据无法放入内存或希望对数据应用转换时,数据存储是最合适的。
下面的列表列出了直接兼容的数据存储trainNetwork
用于序列数据。
可以使用其他内置数据存储来训练深度学习网络转变
和结合
功能。这些函数可以将从数据存储读取的数据转换为所需的表或单元格数组格式trainNetwork
.例如,您可以使用内存阵列和CSV文件读取的数据转换和组合ArrayDatastore
和TabularTextDatastore
对象,分别。
数据存储必须返回表或单元格数组中的数据。自定义小批处理数据存储必须输出表。
数据存储输出 | 示例输出 |
---|---|
表格 |
数据=读取(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-经过-年代数组,h,w, 和c分别对应图像的高度、宽度和通道数量,和年代为序列长度。 迷你批处理中的每个序列必须具有相同的序列长度。 |
3-D图像序列 | h-经过-w-经过-d-经过-c-经过-年代数组,h,w,d, 和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-经过-年代数组,h,w, 和c对应于图像的高度,宽度和数量,以及年代为序列长度。 |
三维图像序列 | h-经过-w-经过-d-经过-c-经过-年代, 在哪里h,w,d, 和c对应于3-D图像的高度,宽度,深度和数量,以及年代为序列长度。 |
提示
如果预测器或响应包含南
S,然后在训练期间通过网络传播。在这些情况下,训练通常不能收敛。
提示
对于回归任务,将反应正常化通常有助于稳定和加速训练。有关更多信息,请参见训练卷积神经网络用于回归.
特性
- - - - - -特性数据特征数据,指定为以下之一:
数据类型 | 描述 | 例用法 | |
---|---|---|---|
数据存储 | TransformedDatastore |
使用自定义转换函数转换从底层数据存储读取的数据批的数据存储。 |
|
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]} |
||
多个输入层 | 细胞阵列与( 首先 输入的顺序由 |
单元阵列用于具有两个输入和一个输出的网络: 数据=读取(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是特征的数量。
响应的格式取决于任务的类型。
任务 | 回应的格式 |
---|---|
分类 | 绝对标量 |
回归 |
|
有关更多信息,请参见用于深度学习的数据存储.
对于适合内存的功能数据并且不需要其他处理如自定义转换,可以指定要作为表的功能数据和响应。
表中的每一行都对应一个观察值。表列中预测器和响应的安排取决于任务的类型。
任务 | 预测 | 回应 |
---|---|---|
功能分类 | 一个或多个列中指定的功能为标量。 如果不指定 |
分类标签 |
特征回归 | 标量值的一列或多列 |
对于具有特征输入的分类网络,如果不指定反应
参数,然后默认使用函数,使用第一个(numcolumns - 1
)的列资源描述
对于预测器和标签的最后一列,其中numfeatures.
是输入数据中特征的数量。
对于具有特征输入的回归网络,如果不指定responseNames
参数,那么函数,默认情况下,使用第一个numfeatures.
预测器的列和响应的后续列,其中numfeatures.
是输入数据中特征的数量。
对于适合内存的功能数据并且不需要额外的处理如自定义转换,您可以将要素数据指定为数字数组。如果将要素数据指定为数字数组,则还必须指定反应
论点。
数字数组必须是N-经过-numfeatures.
数字数组,其中N观察的次数是多少numfeatures.
为输入数据的特征个数。
提示
将反应归一化通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络用于回归.
提示
响应必须不包含南
s.如果预测器数据包含南
,然后通过培训进行传播。然而,在大多数情况下,训练不能收敛。
反应
- - - - - -回应回复。
当输入数据是单元格数组的数字数组时,将响应指定为下列响应之一。
标签的分类向量
数字响应的数字数组
单元格数组分类或数字序列
当输入数据是一个表时,您可以选择指定表中的哪些列包含以下响应之一:
字符向量
字符向量的单元格阵列
字符串数组
当输入数据是数字数组或单元格数组时,响应的格式取决于任务的类型。
任务 | 格式 | |
---|---|---|
分类 | 图像分类 | N标签的分类向量,其中N为观察次数。 |
功能分类 | ||
Sequence-to-label分类 | ||
Sequence-to-sequence分类 | N-by-1标签的分类序列单元格数组,其中N为观察次数。每个序列必须具有与相应的预测器序列相同的时间步骤。 对于单次观测的序列到序列分类任务, |
|
回归 | 二维图像回归 |
|
三维图像回归 |
|
|
特征回归 | N-经过-R矩阵,N观察的次数是多少R是响应的数量。 |
|
Sequence-to-one回归 | N-经过-R矩阵,N序列的个数是和吗R是响应的数量。 | |
Sequence-to-sequence回归 | N-by-1数字序列单元格数组,其中N是序列的数量。序列是矩阵R行,在哪里R是响应的数量。每个序列必须具有与相应的预测器序列相同的时间步骤。 对于单次观测的序列到序列回归任务, |
提示
将反应归一化通常有助于稳定和加速神经网络的回归训练。有关更多信息,请参见训练卷积神经网络用于回归.
提示
响应必须不包含南
s.如果预测器数据包含南
,然后通过培训进行传播。然而,在大多数情况下,训练不能收敛。
层
- - - - - -网络层层
数组|LayerGraph
对象网络层,指定为层
阵列或A.LayerGraph
对象。
要使用顺序连接的所有图层创建网络,可以使用a层
数组作为输入参数。在本例中,返回的网络为SeriesNetwork
对象。
一条定向的非循环图(DAG)网络具有复杂的结构,其中层可以具有多个输入和输出。要创建DAG网络,请指定网络架构作为一个LayerGraph
对象,然后使用该层图作为输入参数trainNetwork
.
有关内置图层列表,请参阅深度学习层名单.
选项
- - - - - -培训方案TrainingOptionsSGDM.
|TrainingOptionsRMSProp
|TrainingOptionsADAM
培训选项,指定为TrainingOptionsSGDM.
,TrainingOptionsRMSProp
, 或者TrainingOptionsADAM
对象返回的培训选项
函数。
净
——训练网络SeriesNetwork
对象|Dagnetwork.
对象训练有素的网络,作为一个返回SeriesNetwork
对象或一个Dagnetwork.
对象。
如果您使用a训练网络层
数组,然后净
是A.SeriesNetwork
对象。如果您使用a训练网络LayerGraph
对象,然后净
是A.Dagnetwork.
对象。
信息
——培训信息训练信息,作为结构返回,其中每个字段是标量或数字向量,每个训练迭代包含一个元素。
对于分类任务,信息
包含以下字段:
TrainingLoss
-损失函数值
TrainingAccuracy
- 训练精度
ValidationLoss
-损失函数值
ValidationAccuracy
——验证精度
基准
——学习利率
FinalValidationLoss
-最终验证损失
FinalValidationAccuracy
-最终验证精度
对于回归任务,信息
包含以下字段:
TrainingLoss
-损失函数值
培训渣
- 培训RMSE值
ValidationLoss
-损失函数值
ValidationRMSE
—验证RMSE值
基准
——学习利率
FinalValidationLoss
-最终验证损失
FinalValidationRMSE
-最终验证RMSE
该结构仅包含字段ValidationLoss
,ValidationAccuracy
,ValidationRMSE
,FinalValidationLoss
,FinalValidationAccuracy
和FinalValidationRMSE
什么时候选项
指定验证数据。的'验证职业'
选择培训选项
确定软件计算验证度量的迭代。最终的验证度量是标量。结构的其他字段是行向量,其中每个元素对应一个训练迭代。对于软件不计算验证度量的迭代,结构中相应的值是南
.
如果您的网络包含批量归一化层,则最终验证度量通常与培训期间评估的验证度量不同。这是因为最终网络中的批量归一化层比在训练期间执行不同的操作。有关更多信息,请参见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开始警告
的序列数据时trainNetwork
函数,将在将来的版本万博1manbetx中删除用于指定屏蔽文件路径的表。
要用不适合存储的序列来训练网络,请使用数据存储。您可以使用任何数据存储来读取您的数据,然后使用转变
函数将数据存储输出转换为trainNetwork
功能要求。例如,可以使用FileDatastore
或者TabularTextDatastore
对象,然后使用转变
函数。
工藤,富山,新博。“使用通过区域的多维曲线分类”。模式识别字母.第20卷,第11-13期,第1103-1111页。
工藤,富山,新博。日本元音数据集.https://archive.ics.uci.edu/ml/datasets/Japanese+Vowels
要并行运行计算,请设置“ExecutionEnvironment”
选项'多gpu'
或者“平行”
.
使用培训选项
设置“ExecutionEnvironment”
和供应的选项
到trainNetwork
.如果你没有设置“ExecutionEnvironment”
,然后trainNetwork
如果可用,可以在GPU上运行。
有关详细信息,请参见并行和在云中扩展深度学习.
为了防止内存不足的错误,推荐的做法是不要将大量的训练数据移动到GPU上。相反,通过使用GPU训练你的网络培训选项
设置“ExecutionEnvironment”
到“汽车”
或者“GPU”
和供应的选项
到trainNetwork
.
输入数据是一个GPUArray.
,包含包含的单元格阵列或表GPUArray.
数据,或返回的数据存储GPUArray.
数据,“ExecutionEnvironment”
选项必须是“汽车”
或者“GPU”
.
有关更多信息,请参见在GPU上运行MATLAB函数(并行计算工具箱).
Ha Hecho Clic en en enrace que参考este comando de matlab:
ejecute el comandoinsuciéndoloen la Ventana de comandos de matlab。los navegadores网站没有adminiten comandos de matlab。
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。