将回归层添加到MatConvNet

时间:2015-04-07 15:19:26

标签: machine-learning regression supervised-learning matconvnet

我设计了一个微笑检测系统。该系统基于深度学习,由MatConvnet实施。最后一层是系统的输出,根据人的微笑量有10个输出。我想使用回归层将这十个输出转换为1到10范围内的数字输出。我怎样才能在MatConvNet中这样做。 感谢

1 个答案:

答案 0 :(得分:0)

对于回归图层,您必须使用自己的图层替换CNN的最后一层(通常是softmaxsoftmaxloss)进行回归。

要在MatConvNet中定义自己的图层,您需要具备以下内容:

  1. 损失函数
  2. 此损失函数的梯度
  3. 回归损失函数的一个流行选择是squared error loss。您应该看一下在MatConvNet中如何实现softmaxloss以及如何在examples/cnn_train.m中调用它。更多细节可以在MatConvNet文档和关于平方损失here的反向传播的简短教程中找到。

    <强>建议: 这不能回答你的问题。但是,考虑到您的问题,将10输出分类转换为分数更容易,而不是训练整个CNN进行回归。

    将数字1到10分配给10类微笑。对于输入图像,CNN将在所有这些类上给出后验概率P(1 ... 10)。只需对类标签(1 * P(1)+ 2 * P(2)+ ....)进行加权求和即可获得微笑量的实数值。