用于定制训练循环的深度学习网络
一个dlnetwork
对象支持使用自动区分自定义训练金宝app循环。
提示
对于大多数深度学习任务,你可以使用预先训练好的网络,并使其适应你自己的数据。有关演示如何使用迁移学习重新训练卷积神经网络来对一组新图像进行分类的示例,请参见训练深度学习网络对新图像进行分类.或者,您可以从头创建和训练网络layerGraph
对象具有trainNetwork
而且trainingOptions
功能。
如果trainingOptions
函数没有为您的任务提供所需的训练选项,那么您可以使用自动区分创建自定义训练循环。要了解更多信息,请参见为自定义训练循环定义深度学习网络.
中指定的网络层转换dlnet
= dlnetwork (层
)层
初始化dlnetwork
对象,表示用于自定义训练循环的深度神经网络。层
可以是LayerGraph
对象或层
数组中。层
必须包含输入层。
一个初始化dlnetwork
对象已准备好进行训练。的可学习参数和状态值dlnet
根据网络输入层定义的输入大小初始化训练。
创建一个初始化dlnet
= dlnetwork (层
,dlX1,…,dlXn
)dlnetwork
使用示例输入dlX1,…,dlXn
.的可学习参数和状态值dlnet
使用基于示例输入定义的输入大小和格式的初始值进行初始化。使用此语法创建一个初始化的dlnetwork
输入没有连接到输入层。
层
- - - - - -网络层LayerGraph
对象|层
数组网络层,指定为aLayerGraph
对象或作为层
数组中。
如果层
是一个层
数组,然后dlnetwork
函数将层串联起来。
网络层不能包含输出层。训练网络时,单独计算损失。
控件支持的层列表金宝appdlnetwork
,请参阅金宝app支持层.
dlX1,…,dlXn
- - - - - -网络输入示例dlarray
示例网络输入,指定为格式化dlarray
对象。软件通过网络传播示例输入,以确定可学习参数和状态参数的适当大小和格式dlnetwork
.
示例输入必须格式化dlarray
对象。当层
是一个层
数组中,以与需要输入的层出现在中的相同顺序提供示例输入层
数组中。当层
是一个LayerGraph
对象中,以与需要输入的层出现的顺序相同的顺序提供示例输入层
的属性LayerGraph
.
时不支持示例输入金宝app特遣部队
是假的。
特遣部队
- - - - - -返回初始化的标志dlnetwork
真正的
或1
(默认)|假
或0
返回初始化的标志dlnetwork
,指定为数字或逻辑1
(真正的
)或0
(假
).
如果特遣部队
是真正的
或1
的可学习参数和状态参数dlnet
根据网络输入层或提供的示例输入,使用用于训练的初始值进行初始化。
如果特遣部队
为false,可学习且状态参数未初始化。在使用未初始化的网络之前,必须首先使用初始化
函数。时不支持示例输入金宝app特遣部队
是假的。
层
- - - - - -网络层层
数组网络层,指定为a层
数组中。
连接
- - - - - -层连接层连接,指定为具有两列的表。
每个表行表示层图中的一个连接。第一列,源
,指定每个连接的源。第二列,目的地
,指定每个连接的目的地。连接源和目的地要么是层名,要么具有表单“layerName / IOName”
,在那里“IOName”
层输入或输出的名称。
数据类型:表格
可学的
- - - - - -网络可学习参数网络可学习参数,指定为一个有三列的表:
层
-层名,指定为字符串标量。
参数
—参数名称,指定为字符串标量。
价值
-参数的值,用a表示dlarray
对象。
网络可学习参数包含网络学习到的特征。例如,卷积和全连通层的权值。
数据类型:表格
InputNames
- - - - - -网络输入层名称网络输入层名称,指定为字符向量的单元格数组。
数据类型:细胞
OutputNames
- - - - - -网络输出层名称网络输出层名称,指定为字符向量的单元格数组。此属性包括输出断开连接的所有层。如果一个层有多个输出,那么断开连接的输出被指定为“layerName / outputName”
.
数据类型:细胞
初始化
- - - - - -初始化网络的标志0
|1
此属性是只读的。
初始化网络的标志,指定为0
或1
.
如果初始化
是0
,表示网络未初始化。在使用网络之前,必须初始化网络。方法初始化网络初始化
函数。
如果初始化
是1
时,对网络进行初始化,可用于训练和推理。如果您更改了可学习参数的值(例如,在训练期间),则初始化
仍然是1
.
数据类型:逻辑
向前 |
计算用于训练的深度学习网络输出 |
预测 |
计算用于推理的深度学习网络输出 |
初始化 |
初始化的可学习参数和状态参数dlnetwork |
layerGraph |
用于深度学习的网络层图 |
setL2Factor |
设置层可学习参数的L2正则化因子 |
setLearnRateFactor |
设置层可学习参数的学习速率因子 |
getLearnRateFactor |
得到层可学习参数的学习率因子 |
getL2Factor |
得到层可学习参数的L2正则化因子 |
dlnetwork
对象要为网络实现自定义训练循环,首先将其转换为dlnetwork
对象。中不包括输出层dlnetwork
对象。相反,您必须在自定义训练循环中指定损失函数。
加载一个预先训练好的GoogLeNet模型googlenet
函数。此功能需要深度学习工具箱™模型为GoogLeNet网络金宝app支持包。如果没有安装此支金宝app持包,则该函数将提供下载链接。
Net = googlenet;
将网络转换为层图,并删除用于分类使用的层removeLayers
.
lgraph = layerGraph(net);lgraph = removeLayers(lgraph,[“概率”“输出”]);
将网络转换为adlnetwork
对象。
Dlnet = dlnetwork(lgraph)
dlnet = dlnetwork with properties: Layers: [142x1 nnet.cnn.layer.Layer] Connections: [168x2 table] Learnables: [116x3 table] State: [0x3 table] InputNames: {'data'} OutputNames: {'loss3-classifier'} Initialized: 1 .初始化
dlnetwork
输入不连接使用示例输入创建多输入dlnetwork
准备好训练了。软件通过网络传播示例输入,以确定可学习参数和状态参数的适当大小和格式dlnetwork
.
定义网络架构。构造一个有两个分支的网络。网络有两个输入,每个分支有一个输入。使用附加层连接分支。
numFilters = 24;layersBranch1 = [convolution2dLayer(3,6*numFilters,“填充”,“相同”,“步”2,“名字”,“conv1Branch1”) groupNormalizationLayer (所有渠道的,“名字”,“gn1Branch1”) reluLayer (“名字”,“relu1Branch1”) convolution2dLayer (3 numFilters“填充”,“相同”,“名字”,“conv2Branch1”) groupNormalizationLayer (“channel-wise”,“名字”,“gn2Branch1”) additionLayer (2“名字”,“添加”) reluLayer (“名字”,“reluCombined”) fullyConnectedLayer (10“名字”,“俱乐部”) softmaxLayer (“名字”,“sm”));layersBranch2 = [convolution2dLayer(1,numFilters,“名字”,“convBranch2”) groupNormalizationLayer (所有渠道的,“名字”,“gnBranch2”));lgraph = layerGraph(layersBranch1);lgraph = addLayers(lgraph,layersBranch2);lgraph = connectLayers(“gnBranch2”,“添加/ in2”);
创建与典型网络输入相同大小格式的示例网络输入。对于这两个输入,使用32的批处理大小。使用大小为64 * 64的输入,其中有三个通道用于该层的输入convBranch1
.使用大小为64 * 64的输入,其中有18个通道用于该层的输入convBranch2
.
dlX1 = dlarray(rand([64 64 3 32]),“SSCB”);dlX2 = dlarray(rand([32 32 18 32]),“SSCB”);
创建dlnetwork
.类中未连接层出现的相同顺序提供输入层
的属性lgraph
.
dlnet = dlnetwork(lgraph,dlX1,dlX2);
检查网络是否已经初始化并准备好进行训练。
dlnet。初始化
Ans = 1
这个例子展示了如何训练一个使用自定义学习率计划分类手写数字的网络。
如果trainingOptions
不提供您需要的选项(例如,自定义学习速率计划),那么您可以使用自动区分定义自己的自定义训练循环。
此示例训练网络对手写数字进行分类基于时间的衰减学习率计划:对于每次迭代,求解器使用 ,在那里t是迭代数, 初始学习率,和k就是衰变。
负荷训练数据
方法将数字数据加载为图像数据存储imageDatastore
函数并指定包含图像数据的文件夹。
dataFolder = fullfile(toolboxdir(“nnet”),“nndemos”,“nndatasets”,“DigitDataset”);imds = imageDatastore(数据文件夹,...“IncludeSubfolders”,真的,....“LabelSource”,“foldernames”);
将数据划分为训练集和验证集。方法留出10%的数据用于验证splitEachLabel
函数。
[imdsTrain,imdsValidation] = splitEachLabel(imds,0.9,“随机”);
本例中使用的网络需要大小为28 × 28 × 1的输入图像。要自动调整训练图像的大小,请使用增强图像数据存储。指定要对训练图像执行的附加增强操作:在水平轴和垂直轴上随机将图像平移到5个像素。数据增强有助于防止网络过度拟合和记忆训练图像的确切细节。
inputSize = [28 28 1];pixelRange = [-5 5];imageAugmenter = imageDataAugmenter(...“RandXTranslation”pixelRange,...“RandYTranslation”, pixelRange);augimdsTrain = augmentedimagedastore (inputSize(1:2)),imdsTrain,“DataAugmentation”, imageAugmenter);
若要自动调整验证图像的大小,而不执行进一步的数据增强,请使用增强图像数据存储,而不指定任何额外的预处理操作。
augimdsValidation = augmentedImageDatastore(inputSize(1:2),imdsValidation);
确定训练数据中的类数。
classes = categories(imdsTrain.Labels);numClasses = nummel(类);
定义网络
定义图像分类的网络。
图层= [imageInputLayer(inputSize,“归一化”,“没有”,“名字”,“输入”20岁的)convolution2dLayer (5“名字”,“conv1”) batchNormalizationLayer (“名字”,“bn1”) reluLayer (“名字”,“relu1”20岁的)convolution2dLayer (3“填充”,“相同”,“名字”,“conv2”) batchNormalizationLayer (“名字”,“bn2”) reluLayer (“名字”,“relu2”20岁的)convolution2dLayer (3“填充”,“相同”,“名字”,“conv3”) batchNormalizationLayer (“名字”,“bn3”) reluLayer (“名字”,“relu3”) fullyConnectedLayer (numClasses“名字”,“俱乐部”) softmaxLayer (“名字”,“softmax”));lgraph = layerGraph(图层);
创建一个dlnetwork
对象从图层图。
Dlnet = dlnetwork(lgraph)
dlnet = dlnetwork with properties: Layers: [12×1 nnet.cnn.layer.Layer] Connections: [11×2 table] Learnables: [14×3 table] State: [6×3 table] InputNames: {'input'} OutputNames: {'softmax'}
定义模型梯度函数
创建函数modelGradients
,列在示例末尾,它需要adlnetwork
对象,一个带有相应标签的小批量输入数据,并返回相对于网络中可学习参数的损失梯度和相应的损失。
指定培训项目
用128个小批量训练10个epoch。
numEpochs = 10;miniBatchSize = 128;
指定用于SGDM优化的选项。指定初始学习速率为0.01,衰减为0.01,动量为0.9。
initialLearnRate = 0.01;衰减= 0.01;动量= 0.9;
火车模型
创建一个minibatchqueue
对象,该对象在训练期间处理和管理小批量图像。对于每个小批量:
使用自定义小批量预处理功能preprocessMiniBatch
(在本例结束时定义)将标签转换为单热编码变量。
用尺寸标签格式化图像数据“SSCB”
(空间,空间,通道,批次)。默认情况下,minibatchqueue
对象将数据转换为dlarray
具有基础类型的对象单
.不要向类标签添加格式。
如果有GPU,可以在GPU上进行训练。默认情况下,minibatchqueue
对象将每个输出转换为gpuArray
如果GPU可用。使用GPU需要并行计算工具箱™和受支持的GPU设备。金宝app有关受支持设备的信息,请参见金宝appGPU支金宝app持版本(并行计算工具箱).
mbq = minibatchqueue(augimdsTrain,...“MiniBatchSize”miniBatchSize,...“MiniBatchFcn”@preprocessMiniBatch,...“MiniBatchFormat”, {“SSCB”,”});
初始化培训进度图。
图lineLossTrain = animatedline(“颜色”,[0.85 0.325 0.098]);Ylim ([0 inf]) xlabel(“迭代”) ylabel (“损失”网格)在
初始化SGDM求解器的速度参数。
速度= [];
使用自定义训练循环训练网络。对于每个纪元,洗牌数据并在小批量数据上循环。对于每个小批量:
方法评估模型梯度、状态和损失dlfeval
而且modelGradients
函数并更新网络状态。
确定基于时间的衰减学习率计划的学习率。
方法更新网络参数sgdmupdate
函数。
显示培训进度。
迭代= 0;开始= tic;%遍历epoch。为epoch = 1:numEpochs% Shuffle数据。洗牌(兆贝可);在小批上循环。而Hasdata (mbq)迭代=迭代+ 1;读取小批数据。[dlX, ly] = next(mbq);使用dlfeval和% modelGradients函数并更新网络状态。[gradients,state,loss] = dlfeval(@modelGradients,dlnet,dlX,dlY);dlnet。状态=state;确定基于时间的衰减学习率计划的学习率。learnRate = initialLearnRate/(1 +衰减*迭代);使用SGDM优化器更新网络参数。[dlnet,velocity] = sgdmupdate(dlnet,gradients,velocity,learnRate,momentum);%显示培训进度。D = duration(0,0,toc(start),“格式”,“hh: mm: ss”);addpoints (lineLossTrain、迭代、失去)标题(”时代:“+ epoch +,消失:"+字符串(D))现在绘制结束结束
测试模型
通过将验证集上的预测结果与真实标签进行比较,检验模型的分类精度。
经过训练后,对新数据进行预测不需要标签。创建minibatchqueue
对象,只包含测试数据的预测器:
为了忽略标签进行测试,将迷你批处理队列的输出数量设置为1。
指定用于训练的相同的小批大小。
属性预处理预测器preprocessMiniBatchPredictors
函数,在示例末尾列出。
对于数据存储的单个输出,指定迷你批处理格式“SSCB”
(空间,空间,通道,批次)。
numOutputs = 1;mbqTest = minibatchqueue(augimdsValidation,numOutputs,...“MiniBatchSize”miniBatchSize,...“MiniBatchFcn”@preprocessMiniBatchPredictors,...“MiniBatchFormat”,“SSCB”);
循环小批和分类图像使用modelPredictions
函数,在示例末尾列出。
预测= modelforecasts (dlnet,mbqTest,classes);
评估分类准确率。
YTest = imdsValidation.Labels;准确度=平均值(预测= YTest)
准确度= 0.9530
模型梯度函数
的modelGradients
函数的参数为dlnetwork
对象dlnet
,一小批输入数据dlX
有相应的标签Y
并返回损失相对于中可学习参数的梯度dlnet
、网络状态、丢失。要自动计算梯度,请使用dlgradient
函数。
函数[gradients,state,loss] = modelGradients(dlnet,dlX,Y) [dlYPred,state] = forward(dlnet,dlX);loss = crossentropy(dlYPred,Y);gradients = dlgradient(loss,dlnet.Learnables);损失= double(gather(extractdata(Loss)));结束
模型预测函数
的modelPredictions
函数的参数为dlnetwork
对象dlnet
,一个minibatchqueue
输入数据的兆贝可
和网络类,并通过迭代中所有数据来计算模型预测minibatchqueue
对象。函数使用onehotdecode
函数来查找得分最高的预测班级。
函数forecasts = modelforecasts (dlnet,mbq,classes) forecasts = [];而hasdata(mbq) dlXTest = next(mbq);dlYPred = predict(dlnet,dlXTest);YPred = onehotdecode(dlYPred,classes,1)';预测=[预测;YPred];结束结束
迷你批量预处理功能
的preprocessMiniBatch
函数使用以下步骤预处理一小批预测器和标签:
对图像进行预处理preprocessMiniBatchPredictors
函数。
从传入的单元格数组中提取标签数据,并沿着第二次维度连接到分类数组中。
One-hot将分类标签编码为数字数组。编码到第一个维度会产生一个与网络输出形状匹配的编码数组。
函数[X,Y] = preprocessMiniBatch(XCell,YCell)预处理预测器。X = preprocessMiniBatchPredictors(XCell);从单元格和级联中提取标签数据。Y = cat(2,YCell{1:end});单热编码标签。Y = onehotencode(Y,1);结束
小批量预测预处理函数
的preprocessMiniBatchPredictors
函数通过从输入单元格数组中提取图像数据并将其连接到数值数组来预处理一小批预测器。对于灰度输入,在第四个维度上的连接将为每个图像添加第三个维度,以用作单个通道维度。
函数X = preprocessMiniBatchPredictors(XCell)%连接。X = cat(4,XCell{1:end});结束
dlnetwork
对象加载一个预先训练好的网络。
网=挤压网;
将网络转换为层图,删除输出层,并将其转换为dlnetwork
对象。
lgraph = layerGraph(net);lgraph = removeLayers(“ClassificationLayer_predictions”);Dlnet = dlnetwork(lgraph);
的可学的
的属性dlnetwork
对象是一个包含网络可学习参数的表。该表在单独的行中包含嵌套层的参数。查看learnables表的前几行。
learnables = dlnet.Learnables;头(可学的)
ans =8×3表层参数值__________________ _________ ___________________ "conv1" "Weights" {3x3x3x64 dlarray} "conv1" "Bias" {1x1x64 dlarray} "fire2-squeeze1x1" "Weights" {1x1x16 dlarray} "fire2-expand1x1" "Weights" {1x1x64 dlarray} "fire2-expand3x3" "Weights" {3x3x16x64 dlarray} "fire2-expand3x3" Bias" {1x1x64 dlarray} "fire2-expand3x3" "Bias" {1x1x64 dlarray}
要冻结网络的可学习参数,可以遍历可学习参数,并使用setLearnRateFactor
函数。
因子= 0;numLearnables = size(learnables,1);为i = 1:numLearnables layerName = learnables.Layer(i);parameterName = learnables.Parameter(i);dlnet = setLearnRateFactor(dlnet,layerName,parameterName,factor);结束
要在训练时使用更新的学习率因子,必须将dlnetwork对象传递给自定义训练循环中的更新函数。例如,使用命令
[dlnet,velocity] = sgdmupdate(dlnet,gradients,velocity);
dlnetwork
创建一个未初始化dlnetwork
没有输入层的对象。创建一个未初始化的dlnetwork
当您还不知道网络输入的大小和格式时,例如dlnetwork
嵌套在自定义层内。
定义网络层。该网络只有一个输入,没有连接到输入层。
图层= [convolution2dLayer(5,20,“名字”,“conv”) batchNormalizationLayer (“名字”,bn的) reluLayer (“名字”,“relu”) fullyConnectedLayer (10“名字”,“俱乐部”) softmaxLayer (“名字”,“sm”));
创建一个未初始化dlnetwork
.设置初始化
名称-值选项为false。
Dlnet = dlnetwork(图层,“初始化”、假);
检查网络是否未初始化。
dlnet。初始化
Ans = 0
该网络的可学习参数和状态参数没有进行初始化训练。要初始化网络,请使用初始化
函数。
如果你想用的话dlnet
方法,然后可以对其进行初始化初始化
函数并提供示例输入。
如果你想用的话dlnet
在自定义层中,您可以利用自动初始化。如果你使用自定义层内dlnetwork
,dlnet
初始化时父dlnetwork
被构造(或者当父网络被初始化时,如果它被构造为未初始化的?dlnetwork
).类训练的网络中使用自定义层trainNetwork
函数,那么dlnet
在训练时自动初始化。有关更多信息,请参见深度学习网络组成.
的dlnetwork
函数支持下面列出的金宝app层和自定义层,没有向前函数返回非空内存值。
层 | 描述 |
---|---|
图像输入层将2-D图像输入到网络并应用数据规范化。 | |
三维图像输入层将三维图像或卷输入网络并进行数据规范化。 | |
序列输入层向网络输入序列数据。 | |
特征输入层将特征数据输入网络并进行数据规范化。当您拥有表示特征的数值标量数据集(没有空间或时间维度的数据)时,请使用此层。 |
层 | 描述 |
---|---|
二维卷积层对输入应用滑动卷积滤波器。 | |
三维卷积层将滑动立方卷积滤波器应用于三维输入。 | |
二维分组卷积层将输入通道分成组,并应用滑动卷积滤波器。使用分组卷积层进行通道可分离(也称为深度可分离)卷积。 | |
转置二维卷积层上采样特征图。 | |
转置的三维卷积层向上采样三维特征图。 | |
全连接层将输入乘以权重矩阵,然后添加偏置向量。 |
层 | 描述 |
---|---|
序列输入层向网络输入序列数据。 | |
LSTM层学习时间序列和序列数据中时间步长之间的长期依赖关系。 | |
双向LSTM (BiLSTM)层学习时间序列或序列数据的时间步长之间的双向长期依赖关系。当您希望网络在每个时间步骤中都能从完整的时间序列中学习时,这些依赖关系非常有用。 | |
GRU层学习时间序列和序列数据中时间步长之间的依赖关系。 |
为lstmLayer
,bilstmLayer
,gruLayer
对象,dlnetwork
对象支持具有默认金宝app值的层StateActivationFunction
而且GateActivationFunction
属性。
层 | 描述 |
---|---|
ReLU层对输入的每个元素执行阈值操作,其中任何小于零的值都被设置为零。 | |
泄漏的ReLU层执行阈值操作,其中任何小于零的输入值都乘以一个固定的标量。 | |
剪切的ReLU层执行阈值操作,其中任何小于零的输入值都被设置为零,任何高于零的输入值都被设置为零剪裁天花板被设定在那个裁剪的天花板上。 | |
ELU激活层对正输入执行恒等运算,对负输入执行指数非线性。 | |
swish激活层对层输入应用swish函数。 | |
双曲正切(tanh)激活层对层输入应用tanh函数。 | |
softmax层对输入应用一个softmax函数。 |
层 | 描述 |
---|---|
批处理归一层对每个通道的所有观测数据分别进行小批处理。为了加快卷积神经网络的训练并降低对网络初始化的敏感性,在卷积层和非线性层之间使用批量归一化层,如ReLU层。 | |
分组归一层对每个观测数据在分组的通道子集上单独归一小批数据。为了加快卷积神经网络的训练并降低对网络初始化的敏感性,在卷积层和非线性层之间使用组归一化层,如ReLU层。 | |
层归一化层对每个观测数据单独地在所有通道上归一小批数据。为了加快循环和多层感知器神经网络的训练,降低网络初始化的敏感性,在可学习层之后使用层归一化层,如LSTM和全连接层。 | |
信道局部响应(跨信道)归一层执行信道归一化。 | |
dropout层以给定的概率随机地将输入元素设置为零。 | |
2-D作物层对输入应用2-D作物。 |
层 | 描述 |
---|---|
平均池化层通过将输入划分为矩形池化区域并计算每个区域的平均值来进行下采样。 | |
三维平均池化层通过将三维输入划分为立方池化区域并计算每个区域的平均值来进行下采样。 | |
全局平均池化层通过计算输入的高度和宽度维度的平均值来执行下采样。 | |
三维全局平均池化层通过计算输入的高度、宽度和深度维度的平均值来执行下采样。 | |
最大池化层通过将输入划分为矩形池化区域,并计算每个区域的最大值来进行下采样。 | |
三维最大池化层通过将三维输入划分为立方池化区域,并计算每个区域的最大值来进行下采样。 | |
全局最大池化层通过计算输入的高度和宽度维度的最大值来执行下采样。 | |
3-D全局最大池化层通过计算输入的高度、宽度和深度维度的最大值来执行下采样。 | |
最大池化层解除最大池化层的输出。 |
层 | 描述 |
---|---|
添加层按元素添加来自多个神经网络层的输入。 | |
乘法层将来自多个神经网络层的输入按元素进行乘法。 | |
深度连接层接受具有相同高度和宽度的输入,并沿着第三维(通道维)将它们连接起来。 | |
连接层接受输入并按照指定的维度连接它们。除了连接维度外,所有维度的输入都必须具有相同的大小。 |
dlnetwork
状态值为dlarray
对象
的状态
的dlnetwork
对象是一个包含网络中每一层的状态参数名称和值的表。
从R2021a开始,状态值为dlarray
对象。此更改可以在使用时提供更好的支持金宝appAcceleratedFunction
对象。为了加速具有频繁变化输入值的深度学习函数,例如包含网络状态的输入,必须将频繁变化的值指定为dlarray
对象。
在以前的版本中,状态值是数值数组。
在大多数情况下,您不需要更新您的代码。方法从状态值中手动提取数据,如果代码要求状态值为数值数组,则要再现前面的行为extractdata
函数与dlupdate
函数。
state = dlupdate(@extractdata,dlnet.State);
使用注意事项和限制:
代码生成仅支持金宝appInputNames
而且OutputNames
属性。
不支持代码生成金宝appdlnetwork
没有输入层的对象。的初始化
的属性dlnetwork
对象必须设置为true。
代码生成dlnetwork
对象与sequenceInputLayer
不支持。金宝app
代码生成仅支持金宝app预测
对象的功能。的dlarray
输入预测
方法必须为单
数据类型。
不支持代码生成金宝appdlnetwork
用于普通C/ c++目标。
代码生成支持MIMO金宝appdlnetworks
.
要创建dlnetwork
对象进行代码生成,请参见为代码生成加载预训练的网络(MATLAB编码器).
使用注意事项和限制:
代码生成仅支持金宝appInputNames
而且OutputNames
属性。
不支持代码生成金宝appdlnetwork
没有输入层的对象。的初始化
的属性dlnetwork
对象必须设置为true。
代码生成dlnetwork
对象与sequenceInputLayer
不支持。金宝app
代码生成仅支持金宝app预测
对象的功能。的dlarray
输入预测
方法必须为单
数据类型。
代码生成支持金宝appdlnetwork
用于cuDNN和TensorRT目标。不支持代码生成金宝appdlnetwork
的手臂®Mali和普通C/ c++目标。
当目标TensorRT与INT8
精度,网络的最后一层(s)必须是asoftmaxLayer
层。
代码生成支持MIMO金宝appdlnetworks
.
要创建dlnetwork
对象进行代码生成,请参见为代码生成加载预训练的网络(GPU编码器).
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。