Dlib - 如何使用 loss_mean_squared_multioutput 训练标签类型?

Posted

技术标签:

【中文标题】Dlib - 如何使用 loss_mean_squared_multioutput 训练标签类型?【英文标题】:Dlib - How do I use the loss_mean_squared_multioutput training label type? 【发布时间】:2018-07-17 14:00:48 【问题描述】:

这里是 ML 和 DLib 初学者,所以如果问题有点绕,请见谅。

我一直在查看Dlib文档中的一些示例项目,大致了解这里找到的示例:

http://dlib.net/dnn_introduction_ex.cpp.html

这个例子看起来很简单,足以让我掌握如何编译一个工作的例子。

然而,我想做的是尝试使用loss_mean_squared_multioutput 层代替示例中的loss_multiclass_log,因为我认为它更适合我的模型。

为了简要描述我遇到的问题,这是一个有 5 个输出的回归问题。在训练时,我想输入一个“图像”,并训练网络了解这 5 个输出中的任何一个输出相对于该输入的价值。

例如,如果我输入(伪代码):

input = [1, 0, 0, 0, 0, 0, 0, 0]

我希望输出产生这样的结果

output = [0, 0.1, 0, 0.5, -1]

考虑到这一点,如果loss_mean_squared_multioutput 的标签是matrix<float>,我应该这样使用它吗?:

loss_multiclass_log<fc<5...
trainer.train([list of matrix<float>], [list of matrix<float 1, 5> = 0, 0.1, 0, 0.5, -1]);

另外,如果您在阅读后觉得这一切完全被误导和荒谬,请务必纠正我。我将不胜感激。

【问题讨论】:

【参考方案1】:

为了帮助任何可能想知道同样事情的人,Dlib 测试套件中有一个示例 - https://github.com/davisking/dlib/blob/master/dlib/test/dnn.cpp#L2343

如何使用它的想法大多是正确的,但要确保你有以下几点:

loss_multiclass_log<fc<5...

你需要在训练器中使用单列矩阵,像这样:

// Use "matrix<float 5, 1>", not "matrix<float 1, 5>"...
trainer.train(input..., [list of matrix<float 5, 1>...);

希望对您有所帮助。

【讨论】:

以上是关于Dlib - 如何使用 loss_mean_squared_multioutput 训练标签类型?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode C++ 控制台应用程序中使用 dlib

如何检查 dlib 是不是正在使用 GPU?

Dlib - 如何使用 loss_mean_squared_multioutput 训练标签类型?

如何使用 conda 在 spyder 上导入 dlib?

如何使用 Dlib 的多目标检测器?

如何在没有 CMake 的情况下使用 Visual Studio 2013 设置 Dlib?