主要内容

指定自定义输出层向后损失函数

如果深入学习工具箱™不提供层你需要为你的分类或回归问题,那么您可以定义自己的自定义层。一个内置的图层列表,看到深度学习层的列表

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

  1. 名字一层一层——给一个名称,因此它可以用于MATLAB®

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

  3. 创建一个构造函数(可选)——指定层如何构造和初始化它的属性。如果你不指定一个构造函数,然后软件初始化属性在创建。

  4. 创建一个远期损失函数——指定预测之间的损失和培训目标。

  5. 创建一个反向损失函数(可选)指定的导数损失的预测。如果你不指定一个落后的损失函数,然后远期损失函数必须支持金宝appdlarray对象。

创建一个反向损失函数是可选的。如果远期损失函数只使用功能的支持金宝appdlarray对象,然后使用自动软件决定了衍生品自动分化。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app。如果你想使用不支持的功能金宝appdlarray对象,或想要使用一个特定的算法向后损失函数,然后向后可以定义一个自定义函数使用这个例子作为参考。

创建自定义层

这个例子自定义分类输出层显示了如何创建一个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。。。& nnet.layer.Acceleratable%示例自定义分类层与误差平方和损失。方法函数层= sseClassificationLayer(名称)%层= sseClassificationLayer(名字)创建一个平方和%的错误分类层并指定名称。%设置图层名称。层。Name = name;%设置层描述。层。描述=“平方和误差”;结束函数损失= forwardLoss(层,Y, T)% = forwardLoss损失(层,Y, T)返回SSE损失之间%预测T Y和培训目标。%计算平方和。sumSquares = ((y - t) ^ 2)总和;%接管意味着mini-batch。N =大小(Y, 4);损失= (sumSquares) / N;结束结束结束

创建向后损失函数

实现backwardLoss函数,它返回的衍生品损失对输入数据和可学的参数。

的语法backwardLossdLdY = backwardLoss(层,Y, T)。输入Y包含由网络和预测T包含了培训目标。输出dLdY的导数是损失的预测吗Y。输出dLdY作为层输入必须相同尺寸的Y

的尺寸YT输入是一样的forwardLoss

上交所的导数损失的预测Y是由

δ l δ Y = 2 N ( Y T ) ,

在哪里N是观察在输入的数量。

创建落后的损失函数,返回这些衍生品。

函数dLdY = backwardLoss(层,Y, T)% dLdY = backwardLoss(层,Y, T)返回的衍生品% SSE损失的预测Y。N =大小(Y, 4);dLdY = 2 * (y - t) / N;结束

完整的层

视图层完成类文件。

classdefsseClassificationLayer < nnet.layer.ClassificationLayer%示例自定义分类层与误差平方和损失。方法函数层= sseClassificationLayer(名称)%层= sseClassificationLayer(名字)创建一个平方和%的错误分类层并指定名称。%设置图层名称。层。Name = name;%设置层描述。层。描述=“平方和误差”;结束函数损失= forwardLoss(层,Y, T)% = forwardLoss损失(层,Y, T)返回SSE损失之间%预测T Y和培训目标。%计算平方和。sumSquares = ((y - t) ^ 2)总和;%接管意味着mini-batch。N =大小(Y, 4);损失= (sumSquares) / N;结束函数dLdY = backwardLoss(层,Y, T)% dLdY = backwardLoss(层,Y, T)返回的衍生品% SSE损失的预测Y。N =大小(Y, 4);dLdY = 2 * (y - t) / N;结束结束结束

GPU的兼容性

如果层转发功能完全支持金宝appdlarray对象,则GPU兼容层。否则,必须支持GPU兼容,层功能的输入并返回输出类型金宝appgpuArray(并行计算工具箱)

许多MATLAB内置函数的支持金宝appgpuArray(并行计算工具箱)dlarray输入参数。支持的功能列表金宝appdlarray对象,看到与dlarray支持函数的列表金宝app。对GPU执行的函数的列表,看看运行在GPU MATLAB函数(并行计算工具箱)使用GPU深度学习,你也必须有一个支持GPU设备。金宝app支持设备的信息,请参阅金宝appGPU计算的需求(并行计算工具箱)在MATLAB与gpu的更多信息,见在MATLAB GPU计算(并行计算工具箱)

另请参阅

||||

相关的话题