检查自定义或功能层的有效性
checkLayer (
检查自定义或功能层的有效性使用所产生的尺寸的数据在层
,validInputSize
)validInputSize
.对于具有单个输入的层,设置validInputSize
为该层输入数据的典型大小。对于有多个输入的层,设置validInputSize
到典型大小的单元格数组,其中每个元素对应一个层输入。
checkLayer (
使用一个或多个名称值参数指定其他选项。层
,validInputSize
,名称=值
)
检查示例自定义层的有效性preluLayer
.
自定义图层preluLayer
,将PReLU操作应用于输入数据。万博1manbetx要访问此层,请将此示例作为活动脚本打开。
创建图层的实例并检查它是否有效使用checkLayer
.将有效的输入大小设置为层中单个观测输入的典型大小。对于单个输入,层期望观察大小h-经过-w-经过-c, 在哪里h,w,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, 在哪里h,w,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秒。
在这种情况下,该函数不会检测到该层的任何问题。
创建一个将软签名操作应用于输入的函数层对象。软码运算由函数给出 .
函数层= @(X) X./(1 + abs(X)))
layer = FunctionLayer with properties: Name: " PredictFcn: @(X)X./(1+abs(X)) format: 0 Learnable Parameters无属性。状态参数无属性。显示所有属性
检查层它是有效的使用checkLayer
功能。将有效的输入大小设置为层中单个观测输入的典型大小。例如,对于单个输入,该图层期望观察大小h-经过-w-经过-c, 在哪里h,w,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, 在哪里h,w,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.Layer
对象|nnet.layer.classificationLayer.
对象|nnet.layer.RegressionLayer
对象层要检查,指定为nnet.layer.Layer
,nnet.layer.classificationLayer.
,nnet.layer.RegressionLayer
, 或者FunctionLayer
对象。
有关说明如何定义自己的自定义层的例子,见定义与可学习参数自定义深层学习层.要创建应用指定功能的层,请使用functionLayer
.
的checkLayer
功能不支持继承的图层万博1manbetxnnet.layer.Formattable
.
validInputSize
- - - - - -有效输入大小有效的输入尺寸的层,指定为正整数或正整数的向量的单元阵列的载体。
对于具有单一的输入层,指定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, 在哪里h,w,c分别为输入数据的高度、宽度和通道数N对应观测次数,则观测维数为4。有关更多信息,请参见层输入大小.
如果指定观察维度,则checkLayer
函数使用大小为1和2的小批量生成的数据检查层函数是否有效。如果不指定观察维度,则该函数将跳过相应的测试。
数据类型:单身的
|双倍的
|int8
|int16
|INT32.
|INT64.
|uint8.
|uint16
|UINT32
|uint64
CheckCodegenCompatibility
- - - - - -标志以启用代码生成测试0
(假)(默认)|1
(真的)标志以启用代码生成测试,指定为0
(假)或1
(真正的)。
如果CheckCodegenCompatibility
是1
(真),那么你必须指定观察层
选项。
代码生成仅支持具有2-D图像或特万博1manbetx征输入的中间图层。代码生成不支持具有状态属性的图层(属性属性万博1manbetx状态
).
的checkLayer
函数不检查层使用的函数是否与代码生成兼容。要检查自定义层使用的函数是否也支持代码生成,请首先使用万博1manbetx代码生成准备应用程序。有关更多信息,请参见使用代码生成准备工具检查代码(MATLAB编码器).
有关如何定义支持代码生成的自定义层的示例,请参见万博1manbetx定义用于代码生成的自定义深度学习层.
数据类型:逻辑
对于每一层,有效输入大小和观测维数依赖于前一层的输出。
对于中间层(类型层nnet.layer.Layer
),有效输入大小和观测维数取决于输入到该层的数据类型。
对于具有单一的输入层,指定validInputSize
作为对应于输入数据的尺寸的整数的矢量。
对于具有多个输入的层中,指定validInputSize
作为矢量,其中每个矢量对应于输入层和所述向量的元素对应于相应的输入数据的尺寸的单元阵列。
对于较大的输入,梯度检查需要更长的时间来运行。要加快测试速度,请指定较小的有效输入大小。
层输入 | 输入大小 | 观察维度 |
---|---|---|
特征向量 | c-经过-N, 在哪里c对应通道数和N是观察人数。 | 2 |
二维图像 | h-经过-w-经过-c-经过-N, 在哪里h,w,c对应于高度,宽度,和图像,分别的通道数,和N是观察人数。 | 4 |
3-d的图像 | h-经过-w-经过-d-经过-c-经过-N, 在哪里h,w,d,c对应于高度,宽度,深度,和3-d的图像,分别的通道数,和N是观察人数。 | 5 |
矢量序列 | c-经过-N-经过-年代, 在哪里c为序列的特征个数,N是观测值的数量,并且年代为序列长度。 | 2 |
二维图像序列 | h-经过-w-经过-c-经过-N-经过-年代, 在哪里h,w,c对应于图像的频道的高度,宽度和数量,N是观测值的数量,并且年代为序列长度。 | 4 |
三维图像序列 | h-经过-w-经过-d-经过-c-经过-N-经过-年代, 在哪里h,w,d,c分别为三维图像的高度、宽度、深度和通道数,N是观测值的数量,并且年代为序列长度。 | 5 |
例如,对于二维图像分类问题,设置validInputSize
到[w c h]
, 在哪里h
,w
,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 , 在哪里h,w,c是输出的高度,宽度和数量,以及N是观察人数。 |
4 |
三维图像回归 | 1-by-1-by-1-by -R-经过-N, 在哪里R是多少回应和N是观察人数。 | 5 |
3 d Image-to-image回归 | h-经过-w-经过-d-经过-c-经过-N , 在哪里h,w,d,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 |
的输出 |
backwardLossIsConsistentInType |
什么时候 |
梯度arenumervallycorrect. |
什么时候背瓣 ,则在背瓣 数字是正确的。 |
backwardPropagationDoesNotError |
什么时候背瓣 未指定,可以使用自动差异来计算衍生物。 |
的forwardLossIsConsistentInType
和backwardLossIsConsistentInType
测试还检查GPU的兼容性。为了执行上的GPU的层的功能,所述功能必须支持输入和类型的输出万博1manbetxgpuArray
使用底层数据类型单身的
.
你点击一个链接对应于这个MATLAB命令:
在MATLAB命令窗口中输入它来运行命令。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从以下列表中选择一个网站:
选择中国网站(中文或英文)以获得最佳网站性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。