c++ - 为什么 dlib 的神经网络 xml 导出包含与培训师指定的层不同的参数?

标签 c++ dlib

在 DLib 中,可以通过 dlib::net_to_xml(some_net, some_filename) 函数简单地输出神经网络类型。它工作正常,但它也显示信息,例如网络类型、learning_rate_multi。例如,在我的例子中,它为其中一层导出以下行(为清楚起见,省略了导出的其余 xml):

<fc num_outputs='42' learning_rate_mult='1' weight_decay_mult='1' bias_learning_rate_mult='500' bias_weight_decay_mult='0'>

这些值是正确的,除了 learning_rate_multweight_decay_mult,它们总是显示 1。我尝试在训练类(class)中将它们设置为不同的值,例如 2 或 0.0001,但它们一直显示 1。我验证了值 2 和 0.0001 确实被网络使用了。

这可能是 dlib 的 dlib::net_to:xml 函数中的错误?

最佳答案

这些值适用于每一层,并且独立于训练器值。层参数与 Adam 优化算法等优化器相关:

https://machinelearningmastery.com/adam-optimization-algorithm-for-deep-learning/

您可以通过在每一层中指定它们来更改它们。 所以不,这不是错误。

关于c++ - 为什么 dlib 的神经网络 xml 导出包含与培训师指定的层不同的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55240396/

相关文章:

C++11线程修改std::list

c - dlib 库在 Visual Studio 2010 中的使用

python - Dlib 特征数组作为 CNN 和预测的输入

python - 如何用C++重写Dlib的Python代码?

python - 在 Python 中使用 dlib 训练对象检测器

c++ - 应该如何使用 const/non-const 参数重载函数?

java - 使用正确的编码 jni 将 jcharArray 转换为 String

machine-learning - Pegasos 参数调整

c++ - 为什么 getline() 不读取文本文件中的所有内容?

c++ - 仅在类的第一个实例初始化时调用的成员函数 (C++)