主要内容

检查自定义层有效性

如果你创建一个定制的深度学习层,那么您可以使用checkLayer函数检查层是有效的。函数检查层有效性,GPU兼容性,正确定义渐变和代码生成的兼容性。一层是有效的检查,运行以下命令:

validInputSize checkLayer(层)
层和的一个实例吗validInputSize是一个向量或细胞数组指定有效的输入层大小。与多个观察,检查使用ObservationDimension选择。运行检查代码生成兼容性,设置CheckCodegenCompatibility选项1(真正的)。对于大的输入大小,梯度检查运行的时间较长。加快检查,指定一个较小的有效输入的大小。

检查自定义层有效性

检查示例自定义层的有效性preluLayer

自定义图层preluLayer附加到这个例子作为支持文件,PReLU操作适用于输入数据。金宝app进入这一层,打开这个例子作为一个活的脚本。

创建一个实例的层。

层= preluLayer;

因为层有一个自定义的初始化函数,初始化层使用networkDataFormat对象,该对象指定预期的一个输入的大小和格式的观察典型的输入层。

指定一个有效的输入的大小(24日24日20)维度对应的高度,宽度,和前一层的输出渠道的数量。

validInputSize =(24日24日20);布局= networkDataLayout (validInputSize,“SSC”);层=初始化(层、布局);

检查层使用有效性checkLayer。指定有效输入大小尺寸一样大小用来初始化层。当你通过网络传递数据,预计4 - d数组输入层,其中第一三维对应高度,宽度,和前面的通道数层输出,和第四维对应于观测。

validInputSize checkLayer(层)
跳过multi-observation测试。与多个观察,使测试指定“ObservationDimension”选项。对于二维图像数据,设置“ObservationDimension”4。3 d图像数据,设置“ObservationDimension”5。对序列数据,设置“ObservationDimension”2。跳过GPU测试。不兼容的GPU设备发现。跳过代码生成的兼容性测试。检查代码生成层的有效性,指定“CheckCodegenCompatibility”和“ObservationDimension”选项。nnet.checklayer运行。测试LayerWithoutBackward .......... .. Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 12 Passed, 0 Failed, 0 Incomplete, 16 Skipped. Time elapsed: 0.054851 seconds.

结果显示通过,失败,跳过测试。如果你不指定ObservationsDimension选项,或没有GPU,那么相对应的函数跳过测试。

检查多个观测

multi-observation图像输入、图层预计的观察大小的数组h——- - - - - -w——- - - - - -c——- - - - - -N,在那里h,w,c高度,宽度,和数量的渠道,分别和N是观测的数量。

检查层有效性为多个观察,指定的大小的观察和设置ObservationDimension选项4。

checkLayer(层、validInputSize ObservationDimension = 4)
跳过GPU测试。不兼容的GPU设备发现。跳过代码生成的兼容性测试。检查代码生成层的有效性,指定“CheckCodegenCompatibility”和“ObservationDimension”选项。nnet.checklayer运行。测试LayerWithoutBackward .......... ........ Done nnet.checklayer.TestLayerWithoutBackward __________ Test Summary: 18 Passed, 0 Failed, 0 Incomplete, 10 Skipped. Time elapsed: 0.030498 seconds.

在这种情况下,函数层没有发现任何问题。

测试列表

checkLayer函数检查自定义层的有效性通过执行一系列测试。

中间的层

checkLayer函数使用这些测试来检查的有效性定义中间层(层类型nnet.layer.Layer)。

测试 描述
functionSyntaxesAreCorrect 层功能定义正确的语法。
predictDoesNotError 预测函数没有错误。
forwardDoesNotError

当指定时,向前函数没有错误。

forwardPredictAreConsistentInSize

向前是指定的,向前预测输出值的大小相同。

backwardDoesNotError 当指定时,落后的没有错误。
backwardIsConsistentInSize

落后的指定的输出落后的的大小是一致的:

  • 金融衍生品对每个输入都是一样的大小相应的输入。

  • 金融衍生品对每个可学的参数都是一样的大小相应的可学的参数。

predictIsConsistentInType

的输出预测与输入类型是一致的。

forwardIsConsistentInType

向前指定的输出向前与输入类型是一致的。

backwardIsConsistentInType

落后的指定的输出落后的与输入类型是一致的。

gradientsAreNumericallyCorrect 落后的是指定的,梯度计算的落后的与数值梯度相一致。
backwardPropagationDoesNotError 落后的没有指定,金融衍生品可以是计算使用自动分化。
predictReturnsValidStates 层与国家性质的预测函数返回有效状态。
forwardReturnsValidStates 层与国家性质的向前函数,如果指定,返回有效状态。
resetStateDoesNotError 层与国家性质的resetState函数,如果指定,没有错误和重置状态有效状态。
codegenPragmaDefinedInClassDef 的编译指示“% # codegen”对于代码生成类文件中指定。
layerProperties金宝appSupportCodegen 图层属性支持代码生成。金宝app
predict金宝appSupportsCodegen 预测有效期为代码生成。
doesNotHaveStateProperties 对于代码生成,层没有状态属性。
functionLayer金宝appSupportsCodegen 代码生成的图层功能必须指定路径和函数Formattable属性必须0(假)。

一些测试运行多次。这些测试也检查不同的数据类型和GPU的兼容性:

  • predictIsConsistentInType

  • forwardIsConsistentInType

  • backwardIsConsistentInType

GPU执行层函数,函数必须支持的输入和输出类型金宝appgpuArray与底层数据类型

输出层

checkLayer函数使用这些测试来检查的有效性定义输出层(层类型nnet.layer.ClassificationLayernnet.layer.RegressionLayer)。

测试 描述
forwardLossDoesNotError forwardLoss没有错误。
backwardLossDoesNotError backwardLoss没有错误。
forwardLossIsScalar 的输出forwardLoss是标量。
backwardLossIsConsistentInSize backwardLoss指定的输出backwardLoss的大小是一致的:dLdY都是一样的尺寸的预测吗Y
forwardLossIsConsistentInType

的输出forwardLoss类型是一致的:损失同一类型的预测吗Y

backwardLossIsConsistentInType

backwardLoss指定的输出backwardLoss类型是一致的:dLdY必须是相同类型的预测吗Y

gradientsAreNumericallyCorrect backwardLoss是指定的,梯度计算的backwardLoss数字是正确的。
backwardPropagationDoesNotError backwardLoss没有指定,金融衍生品可以是计算使用自动分化。

forwardLossIsConsistentInTypebackwardLossIsConsistentInType测试还检查GPU兼容性。GPU执行层函数,函数必须支持的输入和输出类型金宝appgpuArray与底层数据类型

生成的数据

检查层有效性checkLayer函数生成数据的类型取决于层:

层类型 生成的数据的描述
中间 值的范围(1,- 1)
回归输出 预测与价值观和目标范围(1,1)
分类输出

预测的值区间[0,1]。

如果你指定ObservationDimension选项,目标是在一个炎热的编码向量(矢量包含一个1,0其他地方)。

如果你不指定ObservationDimension选项,然后目标区间[0,1]中的值。

检查多个观察,使用指定观察维度ObservationDimension选择。如果您指定观察维度,那么checkLayer函数检查层函数是有效的使用生成的数据和mini-batches大小为1和2。如果不指定这个名称-值对,那么函数跳过测试,检查多个观测层功能是有效的。

诊断

如果测试失败时使用checkLayer,那么功能提供了一个测试诊断和诊断框架。测试诊断强调任何问题发现的层。框架的诊断提供更详细的信息。

功能语法

测试functionSyntaxesAreCorrect检查层函数定义正确语法。

测试诊断 描述 可能的解决方案
不正确的输入参数数量的“预测”层 的语法预测功能不符合层输入的数量。

指定正确的输入和输出参数的数量预测

预测函数的语法取决于类型的层。

  • Z =预测(层,X)将输入数据转发X通过层和输出结果Z,在那里只有一个输入和一个输出。

  • [Z,状态]=预测(层,X)也输出更新的状态参数状态,在那里只有一个状态参数。

你可以调整层的语法与多个输入,多个输出,或多个状态参数:

  • 与多个输入层,取代XX1,…, XN,在那里N输入的数量。的NumInputs属性必须匹配N

  • 与多个输出层,取代ZZ1,…, ZM评选,在那里是输出的数量。的NumOutputs属性必须匹配

  • 层具有多个状态参数,替换状态state1,…, stateK,在那里K是状态参数的数量。

提示

如果输入层可以不同的数量,然后使用变长度输入宗量而不是X1,…, XN。在这种情况下,变长度输入宗量是一个单元阵列的输入,在哪里变长度输入宗量{我}对应于

如果输出的数量可以改变,那么使用varargout而不是Z1、…、锌。在这种情况下,varargout是一个单元阵列的输出,在哪里varargout {j}对应于Zj

提示

如果有一个自定义层dlnetwork为一种可习得的参数对象,然后在预测自定义功能层,使用预测函数dlnetwork。当你这样做,dlnetwork对象预测函数使用适当的预测层操作。如果dlnetwork也有状态参数,然后返回网络状态。

输出参数的数量不正确的“预测”层 的语法预测功能不一致的层数输出。
不正确的输入参数数量“向前”层 可选的语法向前功能不符合层输入的数量。

指定正确的输入和输出参数的数量向前

向前函数的语法取决于类型的层:

  • Z =前进(层,X)将输入数据转发X通过层和输出结果Z,在那里只有一个输入和一个输出。

  • [Z,状态]=前进(层,X)也输出更新的状态参数状态,在那里只有一个状态参数。

  • (__、内存)=(层,X)转发也为一个自定义的内存返回一个值落后的函数使用任何以前的语法。如果层有一个定制的向前功能和自定义落后的函数,那么这个函数必须返回一个内存值。

你可以调整层的语法与多个输入,多个输出,或多个状态参数:

  • 与多个输入层,取代XX1,…, XN,在那里N输入的数量。的NumInputs属性必须匹配N

  • 与多个输出层,取代ZZ1,…, ZM评选,在那里是输出的数量。的NumOutputs属性必须匹配

  • 层具有多个状态参数,替换状态state1,…, stateK,在那里K是状态参数的数量。

提示

如果输入层可以不同的数量,然后使用变长度输入宗量而不是X1,…, XN。在这种情况下,变长度输入宗量是一个单元阵列的输入,在哪里变长度输入宗量{我}对应于

如果输出的数量可以改变,那么使用varargout而不是Z1、…、锌。在这种情况下,varargout是一个单元阵列的输出,在哪里varargout {j}对应于Zj

提示

如果有一个自定义层dlnetwork为一种可习得的参数对象,然后在向前自定义功能层,使用向前的函数dlnetwork对象。当你这样做,dlnetwork对象向前函数使用适当的层操作培训。

输出参数的数量不正确的“前进”层 可选的语法向前功能不一致的层数输出。
不正确的输入参数为“落后”层 可选的语法落后的功能不一致的输入和输出层的数量。

指定正确的输入和输出参数的数量落后的

落后的函数的语法取决于类型的层。

  • dLdX =向后(层,X, Z, dLdZ,内存)返回衍生品dLdX损失对层的输入,在那里只有一个输入和一个输出。Z对应的函数输出和向前发展dLdZ对应的导数对损失Z。函数的输入内存对应的内存输出函数。

  • [dLdX, dLdW] =向后(层,X, Z, dLdZ,内存)还返回导数dLdW的损失就可学会的参数,在哪里只有一个可学的参数。

  • [dLdX, dLdSin] =向后(层,X, Z, dLdZ dLdSout,内存)还返回导数dLdSin失去对国家输入,在哪里一个状态参数和吗dLdSout对应的导数损失对层状态输出。

  • [dLdX, dLdW dLdSin] =向后(层,X, Z, dLdZ dLdSout,内存)还返回导数dLdW的损失可学的参数和返回的导数dLdSin的损失对层状态输入,在哪里只有一个状态参数和单一可学的参数。

你可以调整层的语法与多个输入,多个输出,多个可学的参数,或多个状态参数:

  • 与多个输入层,取代XdLdXX1,…, XNdLdX1,…, dLdXN分别在哪里N输入的数量。

  • 与多个输出层,取代ZdLdZZ1,…, ZM评选dLdZ1,…, dLdZM分别在哪里是输出的数量。

  • 层具有多个可学的参数替换dLdWdLdW1,…, dLdWP,在那里P是可学的参数的数量。

  • 层具有多个状态参数,替换dLdSindLdSoutdLdSin1,…, dLdSinKdLdSout1,…, dLdSoutK分别在哪里K是状态参数的数量。

以减少内存使用,防止未使用的变量保存之间向前和向后传递,更换相应的输入参数~

提示

如果输入的数量落后的可以改变,然后使用吗变长度输入宗量而不是后输入参数。在这种情况下,变长度输入宗量是一个单元阵列的输入,第一个在哪里N对应的元素N输入层,下一个对应的元素输出层,下一个元素对应的衍生品亏损的输出层,下一个K对应的元素K对衍生品的损失K国家输出,和最后一个元素对应内存

如果输出的数量可以改变,那么使用varargout而不是输出参数。在这种情况下,varargout是一个单元阵列的输出,第一个在哪里N对应的元素N对衍生品的损失N输入层,下一个P元素对应的衍生品亏损的P可学的参数,和未来K元素对应的衍生品亏损的K状态输入。

提示

如果层转发功能的支持金宝appdlarray对象,那么软件自动决定了落后的函数,您不需要指定落后的函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

输出参数的数量不正确为“落后”层 可选的语法落后的功能不一致的层数输出。

对于层具有多个输入或输出,您必须设置图层属性的值NumInputs(或者,InputNames),NumOutputs(或者,OutputNames分别)层构造函数。

多观察

checkLayer函数检查对单个和多个观测层功能有效。检查多个观察,使用指定观察维度ObservationDimension选择。如果您指定观察维度,那么checkLayer函数检查层函数是有效的使用生成的数据和mini-batches大小为1和2。如果不指定这个名称-值对,那么函数跳过测试,检查多个观测层功能是有效的。

测试诊断 描述 可能的解决方案
跳过multi-observation测试。与多个观察,使检查指定的ObservationDimension checkLayer参数 如果你不指定“ObservationDimension”参数checkLayer,然后跳过功能测试,检查与多个观测数据。

使用命令checkLayer(层、validInputSize ObservationDimension,昏暗的),在那里自定义层的一个实例,validInputSize是一个向量指定层的有效输入大小,然后呢昏暗的指定层的维度观察的输入。

有关更多信息,请参见层输入大小

功能没有错误

这些测试检查层不输入数据的有效传递数据时错误的大小。

中间层次。测试predictDoesNotError,forwardDoesNotError,backwardDoesNotError检查层功能不错误时通过输入有效的大小。如果你指定一个观察维度,那么这个函数检查层的一个观察和多个观测。

测试诊断 描述 可能的解决方案
函数“预测”抛出一个错误: 预测函数传递数据时错误的大小validInputSize

地址中描述的错误框架的诊断部分。

提示

如果层转发功能的支持金宝appdlarray对象,那么软件自动决定了落后的函数,您不需要指定落后的函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

函数“向前”抛出一个错误: 可选向前函数传递数据时错误的大小validInputSize
函数“向后”抛出一个错误: 可选落后的当通过输出功能错误预测

输出层。测试forwardLossDoesNotErrorbackwardLossDoesNotError检查层功能不错误时通过输入有效的大小。如果你指定一个观察维度,那么这个函数检查层的一个观察和多个观测。

测试诊断 描述 可能的解决方案
函数的forwardLoss抛出一个错误: forwardLoss函数传递数据时错误的大小validInputSize

地址中描述的错误框架的诊断部分。

提示

如果forwardLoss功能支持金宝appdlarray对象,那么软件自动决定了落后的损失函数,您不需要指定backwardLoss函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

函数的backwardLoss抛出一个错误: 可选backwardLoss函数传递数据时错误的大小validInputSize

输出的大小是一致的

这些测试检查输出层函数的大小是一致的。

中间层次。测试backwardIsConsistentInSize检查落后的函数输出正确的大小的衍生品。

落后的函数的语法取决于类型的层。

  • dLdX =向后(层,X, Z, dLdZ,内存)返回衍生品dLdX损失对层的输入,在那里只有一个输入和一个输出。Z对应的函数输出和向前发展dLdZ对应的导数对损失Z。函数的输入内存对应的内存输出函数。

  • [dLdX, dLdW] =向后(层,X, Z, dLdZ,内存)还返回导数dLdW的损失就可学会的参数,在哪里只有一个可学的参数。

  • [dLdX, dLdSin] =向后(层,X, Z, dLdZ dLdSout,内存)还返回导数dLdSin失去对国家输入,在哪里一个状态参数和吗dLdSout对应的导数损失对层状态输出。

  • [dLdX, dLdW dLdSin] =向后(层,X, Z, dLdZ dLdSout,内存)还返回导数dLdW的损失可学的参数和返回的导数dLdSin的损失对层状态输入,在哪里只有一个状态参数和单一可学的参数。

你可以调整层的语法与多个输入,多个输出,多个可学的参数,或多个状态参数:

  • 与多个输入层,取代XdLdXX1,…, XNdLdX1,…, dLdXN分别在哪里N输入的数量。

  • 与多个输出层,取代ZdLdZZ1,…, ZM评选dLdZ1,…, dLdZM分别在哪里是输出的数量。

  • 层具有多个可学的参数替换dLdWdLdW1,…, dLdWP,在那里P是可学的参数的数量。

  • 层具有多个状态参数,替换dLdSindLdSoutdLdSin1,…, dLdSinKdLdSout1,…, dLdSoutK分别在哪里K是状态参数的数量。

以减少内存使用,防止未使用的变量保存之间向前和向后传递,更换相应的输入参数~

提示

如果输入的数量落后的可以改变,然后使用吗变长度输入宗量而不是后输入参数。在这种情况下,变长度输入宗量是一个单元阵列的输入,第一个在哪里N对应的元素N输入层,下一个对应的元素输出层,下一个元素对应的衍生品亏损的输出层,下一个K对应的元素K对衍生品的损失K国家输出,和最后一个元素对应内存

如果输出的数量可以改变,那么使用varargout而不是输出参数。在这种情况下,varargout是一个单元阵列的输出,第一个在哪里N对应的元素N对衍生品的损失N输入层,下一个P元素对应的衍生品亏损的P可学的参数,和未来K元素对应的衍生品亏损的K状态输入。

衍生品dLdX1、…dLdXn必须是相同的大小相应的层输入,然后呢dLdW1…, dLdWk必须是相同的大小相应的可学的参数。输入数据的大小必须是一致的单个和多个观测。

测试诊断 描述 可能的解决方案
不正确的大小的dLdX“落后” 衍生品的损失对层的输入必须是相同的大小相应的层输入。

返回衍生品dLdX1…, dLdXn与同样大小的输入相应的层X1,…, Xn

不正确的大小的导数损失对输入“三机”“落后”
大小的“Z”从“向前”必须回来一样“预测” 的输出预测必须相同尺寸的相应输出吗向前

返回输出Zm评选Z1,…预测相同的大小相应的输出Zm评选Z1,…向前

不正确的大小的导数损失对“W”“落后” 衍生品的损失对可学的参数必须是相同的大小相应的可学的参数。

返回衍生品dLdW1…, dLdWk相同的大小相应的可学的参数W1、…工作

提示

如果层转发功能的支持金宝appdlarray对象,那么软件自动决定了落后的函数,您不需要指定落后的函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

输出层。测试forwardLossIsScalar检查输出的forwardLoss函数是标量。当backwardLoss指定函数,测试backwardLossIsConsistentInSize检查输出的forwardLossbackwardLoss是正确的大小。

的语法forwardLoss损失= forwardLoss(层,Y, T)。输入Y对应于所做的预测网络。这些预测是上一层的输出。输入T对应的培训目标。输出损失之间的损失YT根据指定的损失函数。输出损失必须是标量。

如果forwardLoss功能支持金宝appdlarray对象,那么软件自动决定了落后的损失函数,您不需要指定backwardLoss函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

的语法backwardLossdLdY = backwardLoss(层,Y, T)。输入Y包含由网络和预测T包含了培训目标。输出dLdY的导数是损失的预测吗Y。输出dLdY作为层输入必须相同尺寸的Y

测试诊断 描述 可能的解决方案
不正确的大小的“损失”“forwardLoss” 输出损失forwardLoss必须是一个标量。

返回的输出损失作为一个标量。例如,如果你有多个值的损失,那么你可以使用的意思是总和

不正确的大小的导数损失“dLdY”“backwardLoss” backwardLoss指定,衍生品的损失对一层一层输入必须相同大小的输入。

返回导数dLdY与同样大小的输入层Y

如果forwardLoss功能支持金宝appdlarray对象,那么软件自动决定了落后的损失函数,您不需要指定backwardLoss函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

一致的数据类型和GPU兼容性

这些测试检查输出层函数是一致的在类型和层功能GPU兼容。

如果层转发功能完全支持金宝appdlarray对象,则GPU兼容层。否则,必须支持GPU兼容,层功能的输入并返回输出类型金宝appgpuArray(并行计算工具箱)

许多MATLAB®内置函数支持金宝appgpuArray(并行计算工具箱)dlarray输入参数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app。对GPU执行的函数的列表,看看运行在GPU MATLAB函数(并行计算工具箱)使用GPU深度学习,你也必须有一个支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU计算的需求(并行计算工具箱)在MATLAB与gpu的更多信息,见在MATLAB GPU计算(并行计算工具箱)

中间层次。测试predictIsConsistentInType,forwardIsConsistentInType,backwardIsConsistentInType正确检查层函数输出变量的数据类型。测试检查层函数返回一致的数据类型时输入的数据类型,,gpuArray与底层类型

提示

如果你preallocate数组使用等功能0,那么你必须确保这些数组的数据类型是一致的输入层功能。创建一个数组相同数据类型的零作为另一个数组,使用“喜欢”选择0。例如,初始化一个数组大小的0深圳具有相同数据类型的数组X,使用Z = 0(深圳,“喜欢”,X)

测试诊断 描述 可能的解决方案
不正确类型的“Z”“预测” 输出的类型Zm评选Z1,…预测函数必须与输入一致X1,…, Xn

返回输出Zm评选Z1,…与相同类型的输入X1,…, Xn

不正确类型的输出着干活的“预测”
不正确类型的“Z”“前进” 输出的类型Zm评选Z1,…可选向前函数必须与输入一致X1,…, Xn
不正确类型的输出着干活的“前进”
错误的类型的“dLdX”“落后” 衍生品的类型dLdX1…, dLdXn可选落后的函数必须与输入一致X1,…, Xn

返回衍生品dLdX1…, dLdXn与相同类型的输入X1,…, Xn

不正确类型的损失的导数对输入“三机”“落后”
不正确类型的损失的导数对“W”“落后” 的类型的导数的损失可学的参数必须符合相应的可学的参数。

对于每个可学的参数,返回相同的导数作为相应的可学的参数类型。

提示

如果层转发功能的支持金宝appdlarray对象,那么软件自动决定了落后的函数,您不需要指定落后的函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

输出层。测试forwardLossIsConsistentInTypebackwardLossIsConsistentInType正确检查层函数输出变量的数据类型。测试检查层返回一致的数据类型时输入的数据类型,,gpuArray与底层类型

测试诊断 描述 可能的解决方案
不正确类型的“损失”“forwardLoss” 输出的类型损失forwardLoss函数必须与输入一致Y

返回损失相同的类型作为输入Y

不正确类型的损失的导数的dLdY backwardLoss” 输出的类型dLdY可选backwardLoss函数必须与输入一致Y

返回dLdY相同的类型作为输入Y

提示

如果forwardLoss功能支持金宝appdlarray对象,那么软件自动决定了落后的损失函数,您不需要指定backwardLoss函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

正确的梯度

测试gradientsAreNumericallyCorrect检查层函数的梯度计算数值正确。测试backwardPropagationDoesNotError检查金融衍生品可以是计算使用自动分化。

中间层次。当可选落后的没有指定功能,测试backwardPropagationDoesNotError检查金融衍生品可以是计算使用自动分化。当可选落后的指定函数,测试gradientsAreNumericallyCorrect测试的梯度计算落后的数字是正确的。

测试诊断 描述 可能的解决方案
预计dlarray没有尺寸的标签,而是发现标签 当可选落后的没有指定函数,函数必须输出层前进dlarray对象没有尺寸标签。 确保任何dlarray创建的对象层转发功能不包含尺寸标签。
通过层无法向后传播。检查“转发”功能完全支持自动分化。金宝app另外,手动实现“后退”功能

一个或多个下列:

  • 当可选落后的没有指定函数,该层功能不支持金宝appdlarray对象。

  • 当可选落后的没有指定函数,输入的跟踪dlarray前进中的对象功能已经被打破。例如,通过使用extractdata函数。

检查功能支持金宝appdlarray对象。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

检查输入的衍生品dlarray对象可以被追踪。想要了解更多关于导数的痕迹dlarray对象,看到导数的跟踪

另外,定义一个自定义向后函数通过创建一个函数命名落后的。欲了解更多,请看指定自定义层反向功能

通过层无法向后传播。检查“预测”功能完全支持自动分化。金宝app另外,手动实现“后退”功能
导数的dLdX“落后”是不符合数值梯度

一个或多个下列:

  • 当可选落后的指定函数,导数是错误地计算

  • 前一些输入点函数的微分

  • 误差公差太小了

如果层转发功能的支持金宝appdlarray对象,那么软件自动决定了落后的函数,你可以省略向后函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

检查的衍生品落后的正确计算。

如果衍生品是正确计算,然后在框架的诊断部分,手动检查之间的绝对和相对误差的实际和预期值的导数。

如果绝对和相对误差在可接受的公差,然后你可以忽略这个测试诊断。

损失的导数对输入“三机”“落后”是不符合数值梯度
损失的导数对“W”“落后”是不符合数值梯度

提示

如果层转发功能的支持金宝appdlarray对象,那么软件自动决定了落后的函数,您不需要指定落后的函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

输出层。当可选backwardLoss没有指定功能,测试backwardPropagationDoesNotError检查金融衍生品可以是计算使用自动分化。当可选backwardLoss指定函数,测试gradientsAreNumericallyCorrect测试的梯度计算backwardLoss数字是正确的。

测试诊断 描述 可能的解决方案
预计dlarray没有尺寸的标签,而是发现标签 当可选backwardLoss没有指定功能,forwardLoss函数必须输出dlarray对象没有尺寸标签。 确保任何dlarray创建的对象的forwardLoss功能不包含尺寸标签。
通过层无法向后传播。检查“forwardLoss”功能完全支持自动分化。金宝app另外,实现“backwardLoss”手动功能

一个或多个下列:

  • 当可选backwardLoss函数没有指定,该层forwardLoss功能不支持金宝appdlarray对象。

  • 当可选backwardLoss没有指定函数,输入的跟踪dlarray中的对象forwardLoss函数被打破。例如,通过使用extractdata函数。

检查forwardLoss功能支持金宝appdlarray对象。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

检查输入的衍生品dlarray对象可以被追踪。想要了解更多关于导数的痕迹dlarray对象,看到导数的跟踪

另外,定义一个自定义向后损失函数通过创建一个函数命名backwardLoss。欲了解更多,请看指定自定义输出层向后损失函数

导数的dLdY backwardLoss是符合数值梯度

一个或多个下列:

  • 导数的预测Y不正确计算

  • 在一些输入点函数的微分

  • 误差公差太小了

检查的衍生品backwardLoss正确计算。

如果衍生品是正确计算,然后在框架的诊断部分,手动检查之间的绝对和相对误差的实际和预期值的导数。

如果绝对和相对误差在可接受的公差,然后你可以忽略这个测试诊断。

提示

如果forwardLoss功能支持金宝appdlarray对象,那么软件自动决定了落后的损失函数,您不需要指定backwardLoss函数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app

有效状态

层的状态属性,测试predictReturnsValidStates检查预测函数返回有效状态。当向前指定的测试forwardReturnsValidStates检查函数返回有效状态。测试resetStateDoesNotError检查resetState函数返回一层有效的状态属性。

测试诊断 描述 可能的解决方案
错误使用“预测”层。“状态”必须实际价值数值数组或非格式化dlarray对象 状态输出必须实值数值数组或非格式化dlarray对象。 确保美国确认的框架的诊断实值数值数组或非格式化吗dlarray对象。
错误使用“resetState”层。“状态”必须实际价值数值数组或非格式化dlarray对象 返回的状态属性层必须实值数值数组或非格式化dlarray对象。

代码生成的兼容性

如果你设置CheckCodegenCompatibility选项1(真正的),然后checkLayer函数检查代码生成兼容层。

测试codegenPragmaDefinedInClassDef检查层定义包含代码生成编译指示% # codegen。测试layerProperties金宝appSupportCodegen检查代码生成层属性的支持。金宝app测试predict金宝appSupportsCodegen检查输出的预测在维度和批量大小是一致的。

代码生成与二维图像或特征输入支持金宝app过渡层。代码生成与国家不支持层属性(属性与属性金宝app状态)。

checkLayer函数不会检查所使用的功能层与代码生成兼容。检查函数所使用的自定义层也支持代码生成,第一次使用金宝app代码生成准备应用。更多信息,请参阅检查代码通过使用代码生成工具(MATLAB编码器)

测试诊断 描述 可能的解决方案
在类定义中指定的% # codegen定制层 层定义不包括编译指示“% # codegen”代码生成。

添加% # codegen指令(或编译指示)图层定义表明你打算为这一层生成代码。添加这个指令指示MATLAB代码分析器来帮助您诊断和解决侵犯,导致错误在代码生成。

Nonscalar图层属性必须输入单引号或双或定制层的字符数组 类型的图层包含非标量属性除了单,双或字符数组。

使用转换非标量属性的表示类型单一,双或字符数组。

例如,分类数组转换成一个整数类型的数组代表的类别。

标量图层属性必须是数字、逻辑或字符串为自定义层 层包含标量属性类型的除了数字,逻辑或字符串。

将标量属性用数字表示,或类型的表示逻辑或字符串。

例如,绝对标量转换为一个整数类型的代表了一类。

对于代码生成,“Z”必须有相同数量的维度作为输入层

输出的维度的数量Z预测维度的数量不匹配层的输入。

预测函数,返回的输出层输入相同数量的维度。

对于代码生成,“Z”必须有相同的批大小作为输入层

输出的批量大小的大小Z预测批量大小的大小不匹配层的输入。

预测函数,返回与批量大小的输出层的输入。

另请参阅

|

相关的话题