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 训练标签类型?的主要内容,如果未能解决你的问题,请参考以下文章