【问题标题】:Dlib - How do I use the loss_mean_squared_multioutput training label type?Dlib - 如何使用 loss_mean_squared_multioutput 训练标签类型?
【发布时间】: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]);

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

【问题讨论】:

    标签: c++ machine-learning dlib


    【解决方案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>...);
    

    希望对您有所帮助。

    【讨论】:

      最近更新 更多