主要内容

指定自定义输出层向后丢失功能

如果深度学习工具箱™不提供您的分类或回归问题所需的层,那么您可以定义自己的自定义层。有关内置层的列表,请参见深度学习层列表

这个例子定义自定义分类输出层演示了如何定义和创建一个自定义分类输出层的平方和误差(SSE)损失,并通过以下步骤:

  1. 命名层-给层一个名字,以便它可以在MATLAB中使用®

  2. 声明图层属性-指定图层的属性。

  3. 创建构造函数(可选)-指定如何构造层和初始化它的属性。如果您没有指定构造函数,则软件将初始化属性''在创建。

  4. 创建前向损失函数——指定预测和训练目标之间的损失。

  5. 创建向后损失函数(可选)-指定损失相对于预测的导数。如果不指定向后损失函数,则向前损失函数必须支持万博1manbetxdlarray对象。

创建向后丢失功能是可选的。如果转发损失函数只使用支持的函数万博1manbetxdlarray对象,然后软件通过自动鉴别自动确定衍生品。获取支持的函数列表万博1manbetxdlarray对象,看到支持dlarray的函数列表万博1manbetx.如果你想使用不支持的函数万博1manbetxdlarray对象,或希望为向后损失函数使用特定算法,则可以使用此示例作为指南定义自定义向后函数。

创建自定义层

这个例子定义自定义分类输出层演示如何创建SSE分类层。

分类SSE层计算分类问题的平方和误差损失。SSE是两个连续随机变量之间的误差度量。为预测Y和培训目标T,上证损失之间YT是由

l 1 N n 1 N 1 K Y n T n 2

在哪里N观察的次数是多少K为类数。

查看示例中创建的层定义自定义分类输出层.这一层没有backwardLoss函数。

classdefsseClassificationLayer < nnet.layer.ClassificationLayer%示例自定义分类层的平方和误差损失。方法函数层= sseClassificationLayer(名称)% layer = ssecsassificationlayer (name)创建一个平方和%错误分类层,并指定层名。%设置图层名称。层。Name = name;%设置图层描述。层。描述=平方和误差结束函数loss = forwardLoss(layer, Y, T)% loss = forwardLoss(layer, Y, T)返回SSE之间的损失%预测Y和训练目标T。%计算平方和。sumSquares = ((y - t) ^ 2)总和;在小批量上取平均值。N =大小(Y, 4);损失= (sumSquares) / N;结束结束结束

创建向后损失函数

实现backwardLoss函数,返回损失相对于输入数据和可学习参数的导数。

的语法backwardLossdLdY = backwardLoss(layer, Y, T).输入Y包含了电视台和T包含培训目标。输出dLdY损失相对于预测的导数是多少Y.输出dLdY必须与图层输入的大小相同Y

的尺寸YT是否与输入相同forwardLoss

SSE损失相对于预测的导数Y是由

δ l δ Y 2 N Y T

在哪里N为输入中观测值的个数。

创建返回这些导数的反向损失函数。

函数dLdY = backwardLoss(layer, Y, T)% dLdY = backwardLoss(layer, Y, T)返回% SSE损失相对于预测Y。N =大小(Y, 4);dLdY = 2 * (y - t) / N;结束

完整的层

查看已完成的层类文件。

classdefsseClassificationLayer < nnet.layer.ClassificationLayer%示例自定义分类层的平方和误差损失。方法函数层= sseClassificationLayer(名称)% layer = ssecsassificationlayer (name)创建一个平方和%错误分类层,并指定层名。%设置图层名称。层。Name = name;%设置图层描述。层。描述=平方和误差结束函数loss = forwardLoss(layer, Y, T)% loss = forwardLoss(layer, Y, T)返回SSE之间的损失%预测Y和训练目标T。%计算平方和。sumSquares = ((y - t) ^ 2)总和;在小批量上取平均值。N =大小(Y, 4);损失= (sumSquares) / N;结束函数dLdY = backwardLoss(layer, Y, T)% dLdY = backwardLoss(layer, Y, T)返回% SSE损失相对于预测Y。N =大小(Y, 4);dLdY = 2 * (y - t) / N;结束结束结束

GPU的兼容性

如果层转发功能完全支持万博1manbetxdlarray对象,则该层是GPU兼容的。否则,为了与GPU兼容,层函数必须支持输入和返回输出类型万博1manbetxgpuArray(并行计算工具箱)

许多MATLAB内置函数支持万博1manbetxgpuArray(并行计算工具箱)dlarray输入参数。获取支持的函数列表万博1manbetxdlarray对象,看到支持dlarray的函数列表万博1manbetx.有关在GPU上执行的函数列表,请参见在GPU上运行MATLAB函数(并行计算工具箱)要使用GPU进行深度学习,您还必须有支持的GPU设备。万博1manbetx有关支持的设备的信息,请参见万博1manbetxGPU支万博1manbetx持情况(并行计算工具箱)有关在MATLAB中使用gpu的更多信息,请参见MATLAB中的GPU计算(并行计算工具箱)

另请参阅

|

相关的话题