为什么 dlib 的神经网络 xml 导出包含与培训师指定的层不同的参数?
Why does dlib's neural net xml export contain different parameters for layers than specified by the trainer?
在 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_mult
和 weight_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/
您可以通过在每一层中指定它们来更改它们。
所以不,这不是错误。
在 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_mult
和 weight_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/
您可以通过在每一层中指定它们来更改它们。 所以不,这不是错误。