我设计了一个微笑检测系统。该系统基于深度学习,由MatConvnet实施。最后一层是系统的输出,根据人的微笑量有10个输出。我想使用回归层将这十个输出转换为1到10范围内的数字输出。我怎样才能在MatConvNet中这样做。 感谢
答案 0 :(得分:0)
对于回归图层,您必须使用自己的图层替换CNN的最后一层(通常是softmax
或softmaxloss
)进行回归。
要在MatConvNet中定义自己的图层,您需要具备以下内容:
回归损失函数的一个流行选择是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)+ ....)进行加权求和即可获得微笑量的实数值。