定义自定义深度学习层
提示
本主题说明如何针对您的问题定义自定义深度学习层。有关 Deep Learning Toolbox™ 中的内置层的列表,请参阅深度学习层列表。
您可以针对您的任务定义自己的自定义深度学习层。您可以使用自定义输出层指定自定义损失函数,并定义具有或不具有可学习参数和状态参数的自定义层。定义自定义层后,您可以检查该层是否有效,是否与 GPU 兼容,以及是否输出正确定义的梯度。
本主题说明深度学习层的架构,以及如何针对您的任务定义自定义层。
类型 | 描述 |
---|---|
中间层 | 定义一个自定义深度学习层,并指定可选的可学习参数和状态参数。 有关详细信息,请参阅Define Custom Deep Learning Intermediate Layers。 有关如何使用可学习参数定义自定义层的示例,请参阅Define Custom Deep Learning Layer with Learnable Parameters。有关如何定义具有多个输入的自定义层的示例,请参阅Define Custom Deep Learning Layer with Multiple Inputs。 |
分类输出层 | 定义一个自定义分类输出层并指定损失函数。 有关详细信息,请参阅Define Custom Deep Learning Output Layers。 有关如何定义自定义分类输出层和指定损失函数的示例,请参阅Define Custom Classification Output Layer。 |
回归输出层 | 定义一个自定义回归输出层并指定损失函数。 有关详细信息,请参阅Define Custom Deep Learning Output Layers。 有关如何定义一个自定义回归输出层和指定损失函数的示例,请参阅Define Custom Regression Output Layer。 |
层模板
您可以使用以下模板来定义新层。
中间层架构
在训练过程中,软件在网络中以迭代方式执行前向传导和后向传导。
在网络的前向传导过程中,每个层获取前面各层的输出,应用一个函数,然后将结果输出(正向传播)到后面各层。有状态的层(如 LSTM 层)也会更新层状态。
层可以有多个输入或输出。例如,层可以从多个前面的层中获取 X1、…、XN,并将输出 Z1、…、ZM 正向传播到后续各层。
在执行网络的前向传导结束时,输出层计算预测值 Y 和目标 T 之间的损失 L。
在网络的后向传导过程中,每个层都接受损失关于该层的输出的导数,计算损失 L 关于输入的导数,然后反向传播结果。如果层具有可学习参数,则该层还会计算层权重(可学习参数)的导数。该层使用权重的导数来更新可学习参数。
下图说明通过深度神经网络的数据流,重点显示通过具有单个输入 X、单个输出 Z 和可学习参数 W 的层的数据流。
有关自定义中间层的详细信息,请参阅Define Custom Deep Learning Intermediate Layers。
输出层架构
在训练时的前向传导结束时,输出层获取前一个层(网络预测)的预测输出 Y,并计算这些预测和训练目标之间的损失 L。输出层计算损失 L 关于预测 Y 的导数,并将结果输出(反向传播)到前一个层。
下图说明通过神经网络和输出层的数据流。
有关详细信息,请参阅Define Custom Deep Learning Output Layers。
检查自定义层的有效性
如果您创建自定义深度学习层,则可以使用 checkLayer
函数来检查该层是否有效。该函数检查层的有效性、GPU 兼容性、正确定义的梯度和代码生成兼容性。要检查层是否有效,请运行以下命令:
checkLayer(layer,validInputSize)
layer
是层的实例,validInputSize
是指定层的有效输入大小的向量或元胞数组。要检查多个观测值,请使用 ObservationDimension
选项。要运行代码生成兼容性检查,请将 CheckCodegenCompatibility
选项设置为 1
(true)。对于较大的输入大小,梯度检查的运行时间较长。为了加快检查速度,请指定较小的有效输入大小。有关详细信息,请参阅Check Custom Layer Validity。
另请参阅
functionLayer
| checkLayer
| setLearnRateFactor
| setL2Factor
| getLearnRateFactor
| getL2Factor
| findPlaceholderLayers
| replaceLayer
| assembleNetwork
| PlaceholderLayer
| networkDataLayout
相关主题
- Define Custom Deep Learning Intermediate Layers
- Define Custom Deep Learning Output Layers
- Define Custom Deep Learning Layer with Learnable Parameters
- Define Custom Deep Learning Layer with Multiple Inputs
- Define Custom Deep Learning Layer with Formatted Inputs
- Define Custom Recurrent Deep Learning Layer
- Define Custom Deep Learning Layer for Code Generation
- Define Custom Classification Output Layer
- Define Custom Regression Output Layer
- Custom Layer Function Acceleration
- Deep Learning Network Composition
- Define Nested Deep Learning Layer
- Check Custom Layer Validity
- 深度学习层列表