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

我是机器学习和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]);

如果您在阅读后觉得这完全是误导和无稽之谈,请随时纠正我。我会很感激您的指导。


回答:

为了帮助可能有同样疑问的人,Dlib的测试套件中有一个示例 – https://github.com/davisking/dlib/blob/master/dlib/test/dnn.cpp#L2343

使用它的想法基本上是对的,但请确保在以下位置使用单列矩阵:

loss_multiclass_log<fc<5...

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

// 使用 "matrix<float 5, 1>",而不是 "matrix<float 1, 5>"...trainer.train(input..., [list of matrix<float 5, 1>...);

希望这对您有帮助。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注