我设计了一个微笑检测系统。该系统基于深度学习,由 MatConvnet 实现。最后一层是系统的输出,根据人的微笑量有10个输出。我想用回归层将这十个输出转换为 1 到 10 范围内的数字输出。我怎样才能在 MatConvNet 中做到这一点。谢谢
问问题
1862 次
1 回答
0
对于回归层,您必须将 CNN 的最后一层(通常为softmax
或softmaxloss
)替换为您自己的回归层。
为了在 MatConvNet 中定义自己的层,您需要具备以下条件:
- 损失函数
- 这个损失函数的梯度
回归损失函数的一个流行选择是平方误差损失。你应该看看softmaxloss
在 MatConvNet 中是如何实现的,以及它是如何被调用的examples/cnn_train.m
。更多细节可以在 MatConvNet 文档和关于平方损失反向传播的简短教程中找到。
建议: 这并不能回答你的问题。但是,鉴于您的问题,将您的 10 个输出分类转换为分数比训练整个 CNN 进行回归更容易。
将数字 1 到 10 分配给您的 10 类微笑。对于输入图像,CNN 将给出所有这些类的后验概率 P(1...10)。只需对类标签 ( 1*P(1) + 2*P(2) + ....) 进行加权求和,即可得到微笑量的实数值。
于 2015-04-30T20:38:50.470 回答