主要内容

checkLayer

检查自定义或功能层的有效性

描述

例子

checkLayer (validInputSize检查自定义或功能层的有效性使用所产生的尺寸的数据在validInputSize.对于具有单个输入的层,设置validInputSize为该层输入数据的典型大小。对于有多个输入的层,设置validInputSize到典型大小的单元格数组,其中每个元素对应一个层输入。

例子

checkLayer (validInputSize名称=值使用一个或多个名称值参数指定其他选项。

例子

全部折叠

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

自定义图层preluLayer,将PReLU操作应用于输入数据。万博1manbetx要访问此层,请将此示例作为活动脚本打开。

创建图层的实例并检查它是否有效使用checkLayer.将有效的输入大小设置为层中单个观测输入的典型大小。对于单个输入,层期望观察大小h-经过-w-经过-c, 在哪里hw,c是先前层的输出通道的高度,宽度和数量,分别。

指定validInputSize作为输入阵列的典型大小。

层= preluLayer(20);validInputSize = [5 5 20];validInputSize checkLayer(层)
跳过multi-observation测试。要启用带有多个观察的测试,请指定“ObservationDimension”选项。对于2 d的图像数据,设定“ObservationDimension”〜4。3-d的图像数据,设定“ObservationDimension”到5对于序列数据,设定“ObservationDimension”为2。跳绳GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定“CheckCodegenCompatibility”和“ObservationDimension”选项。运行nnet.checklayer.TestLayerWithoutBackward .......... ..完成nnet.checklayer.TestLayerWithoutBackward __________测试小结:12过去了,0失败,0不完整,16跳过。经过时间:0.18741秒。

结果显示通过、失败和跳过测试的数量。如果不指定观察结果选项,或没有GPU,则该功能跳过相应的测试。

检查多个观察

对于多观测输入,该层期望一个大小的观测数组h-经过-w-经过-c-经过-N, 在哪里hw,c通道的高度、宽度和数量分别是和吗N是观察人数。

检查多个观测该层的有效性,指定一个观测值的典型尺寸,并设置观察层选项4。

层= preluLayer(20);validInputSize = [5 5 20];checkLayer(层、validInputSize ObservationDimension = 4)
跳过GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定“CheckCodegenCompatibility”和“ObservationDimension”选项。运行nnet.checklayer.TestLayerWithoutBackward .......... ........完成net.checklayer. testlayerwithoutbackward __________测试摘要:18通过,0失败,0不完整,10跳过。时间:0.19972秒。

在这种情况下,该函数不会检测到该层的任何问题。

创建一个将软签名操作应用于输入的函数层对象。软码运算由函数给出 f x x 1 + | x |

函数层= @(X) X./(1 + abs(X)))
layer = FunctionLayer with properties: Name: " PredictFcn: @(X)X./(1+abs(X)) format: 0 Learnable Parameters无属性。状态参数无属性。显示所有属性

检查层它是有效的使用checkLayer功能。将有效的输入大小设置为层中单个观测输入的典型大小。例如,对于单个输入,该图层期望观察大小h-经过-w-经过-c, 在哪里hw,c是先前层的输出通道的高度,宽度和数量,分别。

指定validInputSize作为输入阵列的典型大小。

validInputSize = [5 5 20];validInputSize checkLayer(层)
跳过multi-observation测试。要启用带有多个观察的测试,请指定“ObservationDimension”选项。对于2 d的图像数据,设定“ObservationDimension”〜4。3-d的图像数据,设定“ObservationDimension”到5对于序列数据,设定“ObservationDimension”为2。跳绳GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定“CheckCodegenCompatibility”和“ObservationDimension”选项。运行nnet.checklayer.TestLayerWithoutBackward .......... ..完成nnet.checklayer.TestLayerWithoutBackward __________测试小结:12过去了,0失败,0不完整,16跳过。时间:0.2085秒。

结果显示通过、失败和跳过测试的数量。如果不指定观察结果选项,或没有GPU,则该功能跳过相应的测试。

检查多个观察

对于多观测图像的输入,该层需要一个大小的观测数组h-经过-w-经过-c-经过-N, 在哪里hw,c通道的高度、宽度和数量分别是和吗N是观察人数。

检查多个观测该层的有效性,指定一个观测值的典型尺寸,并设置观察层选项4。

函数层= @(X) X./(1 + abs(X)));validInputSize = [5 5 20];checkLayer(层、validInputSize ObservationDimension = 4)
跳过GPU测试。没有找到兼容的GPU设备。跳过代码生成兼容性测试。要检查代码生成层的有效性,请指定“CheckCodegenCompatibility”和“ObservationDimension”选项。运行nnet.checklayer.TestLayerWithoutBackward .......... ........完成net.checklayer. testlayerwithoutbackward __________测试摘要:18通过,0失败,0不完整,10跳过。时间:0.13807秒。

在这种情况下,该函数不会检测到该层的任何问题。

检查自定义层的代码生成兼容性codegenPreluLayer

自定义图层codegenPreluLayer,将PReLU操作应用于输入数据。万博1manbetx要访问此层,请将此示例作为活动脚本打开。

创建该层的实例并使用checkLayer.指定有效输入大小为典型的输入的单次观察到层的大小。该层预期4- d阵列的输入,其中前三个尺寸对应于所述高度,宽度和数量的先前层的输出信道,而第四维对应于观测。

指定的观察的输入的典型大小,并设置“ObservationDimension”选项4。要检查代码生成兼容性,请设置CheckCodegenCompatibility选择真正的.的checkLayer功能不会检查与代码生成不兼容的函数。要检查代码生成是否支持自定义图层定义,请首先使用万博1manbetx代码生成准备应用程序。有关更多信息,请参见使用代码生成准备工具检查代码(MATLAB编码器)

层= codegenPreluLayer (20,“prelu”);validInputSize = [24 24 20];checkLayer(层,validInputSize,ObservationDimension = 4,CheckCodegenCompatibility =真)
跳过GPU测试。没有找到兼容的GPU设备。运行nnet.checklayer.TestLayerWithoutBackward  .......... .......... ...完成net.checklayer. testlayerwithoutbackward __________测试摘要:23通过,0失败,0不完整,5跳过。时间:1.2291秒。

该函数不检测层的任何问题。

输入参数

全部折叠

层要检查,指定为nnet.layer.Layernnet.layer.classificationLayer.nnet.layer.RegressionLayer, 或者FunctionLayer对象。

有关说明如何定义自己的自定义层的例子,见定义与可学习参数自定义深层学习层.要创建应用指定功能的层,请使用functionLayer

checkLayer功能不支持继承的图层万博1manbetxnnet.layer.Formattable

有效的输入尺寸的层,指定为正整数或正整数的向量的单元阵列的载体。

  • 对于具有单一的输入层,指定validInputSize作为对应于输入数据的尺寸的整数的矢量。例如,(5 5 10)对应于5-×5-of 10的有效输入数据。

  • 对于具有多个输入的层中,指定validInputSize作为矢量,其中每个矢量对应于输入层和所述向量的元素对应于相应的输入数据的尺寸的单元阵列。例如,{[24 24 20],[24 24 10]}对应于两个输入,其中24 * 24 * 20是用于第一输入,并提供24×24乘10的有效输入大小的有效输入大小为所述第二输入端的有效的输入大小。

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

对于较大的输入,梯度检查需要更长的时间来运行。要加快测试速度,请指定较小的有效输入大小。

例子:(5 5 10)

例子:{[24 24 20],[24 24 10]}

数据类型:单身的|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32|uint64|细胞

名称-值参数

指定可选参数对为名1 =值1,...,NameN =值N, 在哪里姓名参数名和价值是相应的价值。名称 - 值参数必须在其他参数之后出现,但对的顺序无关紧要。

例子:ObservationDimension = 4设置观察尺寸为4

观察维度,指定为正整数。

观察尺寸指定其中所述层的输入数据对应于观察的尺寸。例如,如果该层预期的输入数据是大小为h-经过-w-经过-c-经过-N, 在哪里hw,c分别为输入数据的高度、宽度和通道数N对应观测次数,则观测维数为4。有关更多信息,请参见层输入大小

如果指定观察维度,则checkLayer函数使用大小为1和2的小批量生成的数据检查层函数是否有效。如果不指定观察维度,则该函数将跳过相应的测试。

数据类型:单身的|双倍的|int8|int16|INT32.|INT64.|uint8.|uint16|UINT32|uint64

标志以启用代码生成测试,指定为0(假)或1(真正的)。

如果CheckCodegenCompatibility1(真),那么你必须指定观察层选项。

代码生成仅支持具有2-D图像或特万博1manbetx征输入的中间图层。代码生成不支持具有状态属性的图层(属性属性万博1manbetx状态).

checkLayer函数不检查层使用的函数是否与代码生成兼容。要检查自定义层使用的函数是否也支持代码生成,请首先使用万博1manbetx代码生成准备应用程序。有关更多信息,请参见使用代码生成准备工具检查代码(MATLAB编码器)

有关如何定义支持代码生成的自定义层的示例,请参见万博1manbetx定义用于代码生成的自定义深度学习层

数据类型:逻辑

更多关于

全部折叠

层输入大小

对于每一层,有效输入大小和观测维数依赖于前一层的输出。

中间的层

对于中间层(类型层nnet.layer.Layer),有效输入大小和观测维数取决于输入到该层的数据类型。

  • 对于具有单一的输入层,指定validInputSize作为对应于输入数据的尺寸的整数的矢量。

  • 对于具有多个输入的层中,指定validInputSize作为矢量,其中每个矢量对应于输入层和所述向量的元素对应于相应的输入数据的尺寸的单元阵列。

对于较大的输入,梯度检查需要更长的时间来运行。要加快测试速度,请指定较小的有效输入大小。

层输入 输入大小 观察维度
特征向量 c-经过-N, 在哪里c对应通道数和N是观察人数。 2
二维图像 h-经过-w-经过-c-经过-N, 在哪里hw,c对应于高度,宽度,和图像,分别的通道数,和N是观察人数。 4
3-d的图像 h-经过-w-经过-d-经过-c-经过-N, 在哪里hwd,c对应于高度,宽度,深度,和3-d的图像,分别的通道数,和N是观察人数。 5
矢量序列 c-经过-N-经过-年代, 在哪里c为序列的特征个数,N是观测值的数量,并且年代为序列长度。 2
二维图像序列 h-经过-w-经过-c-经过-N-经过-年代, 在哪里hw,c对应于图像的频道的高度,宽度和数量,N是观测值的数量,并且年代为序列长度。 4
三维图像序列 h-经过-w-经过-d-经过-c-经过-N-经过-年代, 在哪里hwd,c分别为三维图像的高度、宽度、深度和通道数,N是观测值的数量,并且年代为序列长度。 5

例如,对于二维图像分类问题,设置validInputSize[w c h], 在哪里hw,c对应于高度,宽度,和图像,分别的通道数,和观察层4

代码生成只支持带有二维图像输入的万博1manbetx中间层。

输出层

用于输出层(类型为nnet.layer.classificationLayer.nnet.layer.RegressionLayer), 放validInputSize到单个输入观察的典型大小Y到图层。

对于分类问题,有效输入量和观测维数Y取决于问题的类型:

分类任务 输入大小 观察维度
2-D图像分类 1乘1逐K-经过-N, 在哪里K班级的数量是多少N是观察人数。 4
3-d的图像分类 1-by-1-by-1-by -K-经过-N, 在哪里K班级的数量是多少N是观察人数。 5
Sequence-to-label分类 K-经过-N, 在哪里K班级的数量是多少N是观察人数。 2
Sequence-to-sequence分类 K-经过-N-经过-年代, 在哪里K为班级数,N是观测值的数量,并且年代为序列长度。 2

例如,对于二维图像分类问题,设置validInputSize(1 1 K), 在哪里K是班数,和观察层4

对于回归问题,的维度Y还取决于问题的类型。下表描述的尺寸Y

回归的任务 输入大小 观察维度
二维图像回归 1乘1逐R-经过-N, 在哪里R是多少回应和N是观察人数。 4
二维Image-to-image回归 h-经过-w-经过-c-经过-N, 在哪里hw,c是输出的高度,宽度和数量,以及N是观察人数。 4
三维图像回归 1-by-1-by-1-by -R-经过-N, 在哪里R是多少回应和N是观察人数。 5
3 d Image-to-image回归 h-经过-w-经过-d-经过-c-经过-N, 在哪里hwd,c是输出的高度,宽度,深度和频道的数量,以及N是观察人数。 5
Sequence-to-one回归 R-经过-N, 在哪里R是多少回应和N是观察人数。 2
Sequence-to-sequence回归 R-经过-N-经过-年代, 在哪里R为响应次数,N是观测值的数量,并且年代为序列长度。 2

例如,对于二维图像回归问题,设置validInputSize(1 1 R), 在哪里R是多少回应,和观察层4

算法

全部折叠

测试名单

checkLayer函数通过执行一系列测试来检查自定义层的有效性,如表中所示。有关所使用的测试的详细信息checkLayer,请参阅检查自定义层有效性

中间的层

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

测试 描述
functionSyntaxesAreCorrect 的层的功能的语法正确定义。
predictDoesNotError 预测功能不会错误。
forwardDoesNotError

当指定时,向前功能不会错误。

forwardPredictAreConsistentInSize

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

backwardDoesNotError 当指定时,落后的没有错误。
反向索担心

什么时候落后的被指定时,的输出落后的尺寸一致:

  • 关于每个输入的衍生物与相应的输入相同。

  • 对于每个可学习参数的导数与相应的可学习参数的大小相同。

predictIsConsistentInType

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

forwardIsConsistentInType

什么时候向前被指定时,的输出向前与输入类型一致。

backwardIsConsistentInType

什么时候落后的被指定时,的输出落后的与输入类型一致。

梯度arenumervallycorrect. 什么时候落后的,则在落后的与数值梯度一致。
backwardPropagationDoesNotError 什么时候落后的未指定,可以使用自动差异来计算衍生物。
predictReturnsValidStates 对于具有状态特性的层,所述预测函数返回有效状态。
forwardReturnsValidStates 对于具有状态特性的层,所述向前函数(如果指定)返回有效状态。
ResetStateDoOSNotError. 对于具有状态特性的层,所述重置静止功能,如果指定,没有错误,并复位状态,以有效状态。
codegenPragmaDefinedInClassDef 的编译指示“% # codegen”用于代码生成在类文件中指定。
checkfor万博1manbetxsupportedlayerpropertiesforcodegen. 层特性支持代码生成。万博1manbetx
predictisvalidforcodegegeneration. 预测对代码生成有效。
doesNotHaveStateProperties 对于代码生成,该图层没有状态属性。
万博1manbetx支持的功能 对于代码生成,图层不是aFunctionLayer对象。

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

  • predictIsConsistentInType

  • forwardIsConsistentInType

  • backwardIsConsistentInType

为了执行上的GPU的层的功能,所述功能必须支持输入和类型的输出万博1manbetxgpuArray使用底层数据类型单身的

输出层

checkLayer函数使用这些测试检查自定义输出层(类型为nnet.layer.classificationLayer.nnet.layer.RegressionLayer).

测试 描述
forwardLossDoesNotError forwardLoss没有错误。
backwardLossDoesNotError 背瓣没有错误。
forwardLossIsScalar 的输出forwardLoss是标量。
backwardLossIsConsistentInSize 什么时候背瓣被指定,输出背瓣在尺寸上是一致的:dLdY和预测的大小一样吗Y
forwardLossIsConsistentInType

的输出forwardLoss在类型一致的:损失和预测的类型一样吗Y

backwardLossIsConsistentInType

什么时候背瓣被指定,输出背瓣在类型一致的:dLdY一定和预测的类型一样吗Y

梯度arenumervallycorrect. 什么时候背瓣,则在背瓣数字是正确的。
backwardPropagationDoesNotError 什么时候背瓣未指定,可以使用自动差异来计算衍生物。

forwardLossIsConsistentInTypebackwardLossIsConsistentInType测试还检查GPU的兼容性。为了执行上的GPU的层的功能,所述功能必须支持输入和类型的输出万博1manbetxgpuArray使用底层数据类型单身的

介绍了R2018a