定义定制的深度学习层
提示
这一主题解释了如何自定义深度学习层的问题。的内置层深度学习工具箱™,明白了深度学习层的列表。
您可以定义自己的自定义深度学习任务层。您可以指定一个自定义损失函数使用一个自定义输出层和自定义层有或没有可学的和状态参数。定义一个自定义层之后,可以检查层是有效的和GPU兼容,并输出正确定义渐变。
这个主题解释深度学习的架构层和如何定义自定义层用于你的任务。
类型 | 描述 |
---|---|
中间一层 | 定义一个自定义深度学习层并指定可选的可学的参数和状态参数。 有关更多信息,请参见定义定制的深度学习过渡层。 一个例子,演示如何定义一个自定义层与可学的参数,看定义定制的深度学习层与可学的参数。一个例子,演示如何定义一个自定义层具有多个输入,明白了定义定制的深度学习与多个输入层。 |
分类输出层 | 定义一个自定义分类输出层和指定一个损失函数。 有关更多信息,请参见自定义输出层深度学习。 为一个例子,演示如何定义一个自定义分类输出层和指定一个损失函数,看看自定义分类输出层。 |
回归输出层 | 定义一个自定义回归输出层和指定一个损失函数。 有关更多信息,请参见自定义输出层深度学习。 为一个例子,演示如何定义一个自定义回归输出层和指定一个损失函数,看看定义定制的回归输出层。 |
层模板
您可以使用以下模板来定义新的层。
过渡层结构
在培训期间,软件迭代执行前后通过网络。
在通过网络,每一层都需要前一层的输出,适用于一个函数,然后输出(向前传播)结果到下一层。有状态层,例如LSTM层,也更新层的状态。
层可以有多个输入或输出。例如,一个层X1、…XN之前从多个层次和转发传播输出Z1、…Z米随后的层。
最后的传球前进网络输出层计算损失l之间的预测Y和目标T。
在向后通过网络,每一层需要的衍生品损失对输出层,计算损失的衍生品l对于输入,然后向后传播的结果。如果层可学的参数,然后一层一层的衍生品也计算重量(可学的参数)。层使用衍生品的权重更新可学的参数。
下图描述了通过深层神经网络的数据流,凸显了通过使用单个输入层数据流X,一个单一的输出Z,可学的参数W。
关于自定义中间层次的更多信息,见定义定制的深度学习过渡层。
输出层的体系结构
年底在训练时间前进传球,一个输出层的输出Y前面的层(网络预测)和计算损失l这些预测与培训目标。计算输出层的衍生品损失l对预测Y和输出(向后传播)结果前一层。
下图描述了通过神经网络的数据流和一个输出层。
有关更多信息,请参见自定义输出层深度学习。
检查的有效性定义层
如果你创建一个定制的深度学习层,那么您可以使用checkLayer
函数检查层是有效的。函数检查层有效性,GPU兼容性,正确定义渐变和代码生成的兼容性。一层是有效的检查,运行以下命令:
validInputSize checkLayer(层)
层
层和的一个实例吗validInputSize
是一个向量或细胞数组指定有效的输入层大小。与多个观察,检查使用ObservationDimension
选择。运行检查代码生成兼容性,设置CheckCodegenCompatibility
选项1
(真正的)。对于大的输入大小,梯度检查运行的时间较长。加快检查,指定一个较小的有效输入的大小。
有关更多信息,请参见检查自定义层有效性。
另请参阅
functionLayer
|checkLayer
|setLearnRateFactor
|setL2Factor
|getLearnRateFactor
|getL2Factor
|findPlaceholderLayers
|replaceLayer
|assembleNetwork
|PlaceholderLayer
|networkDataLayout