将回归层添加到 MatConvNet

Posted

技术标签:

【中文标题】将回归层添加到 MatConvNet【英文标题】:Add regression layer to MatConvNet 【发布时间】:2015-06-12 06:14:07 【问题描述】:

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

【问题讨论】:

【参考方案1】:

对于回归层,您必须将 CNN 的最后一层(通常为 softmaxsoftmaxloss)替换为您自己的回归层。

为了在 MatConvNet 中定义自己的层,您需要具备以下条件:

    损失函数 此损失函数的梯度

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

建议: 这不能回答你的问题。但是,鉴于您的问题,将您的 10 个输出分类转换为分数比训练整个 CNN 进行回归更容易。

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

【讨论】:

以上是关于将回归层添加到 MatConvNet的主要内容,如果未能解决你的问题,请参考以下文章

将自定义输出层添加到 R 中的内置(功能)keras 模型

如何将预测添加到多项式回归

将图例添加到多元线性回归图的单个图

将 1000 条回归线添加到 ggplot 的最佳方法是啥? (基于模型的引导)

优化预测基于matlab鲸鱼优化算法优化BP回归预测含Matlab源码 W002期

将线性回归线添加到 R 上的 ggplot2 dotplot