machine-learning - 向 MatConvNet 添加回归层

标签 machine-learning regression supervised-learning matconvnet

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

最佳答案

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

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

  1. 损失函数
  2. 该损失函数的梯度

回归损失函数的一个流行选择是 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) + ....) 即可获得微笑量的实数值。

关于machine-learning - 向 MatConvNet 添加回归层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29495145/

相关文章:

python - Python 3x 的最佳机器学习包?

python - 使用 GridsearchCV 调整参数未给出最佳结果

r - 如何在R中拟合信息(负熵)〜大小的回归?

r - 如何比较R中的斜率

machine-learning - 监督学习和无监督学习有什么区别?

machine-learning - 机器学习中数据集的标记

python - Keras 二维输入到二维输出

python - 如何找到真实数据的概率分布和参数? (Python 3)

Highcharts - 获取交叉系列的交叉点

python - 根据值(value)使用不同的估算器