MXNet 对每一层设置学习率无效

以下的讨论是基于:
操作系统: Ubuntu16.04和Win 10 mxnet 1.1.0

三种方式设置每一层的学习率【attr={},set_lr_mult,lr_mult=0.5】,最终结果不受lr_mult的值的影响,总是相同,求解正确对每一层设置学习率的方式

代码是MXNET的wide_deep 样例代码,incubator-mxnet/example/sparse/wide_deep

1赞

用的gluon还是module?

用的module,请问正确设置方式是什么呢

所运行的代码是 incubator-mxnet/example/sparse/wide_deep

按理说设置lr_mult就行了,贴一下代码?

代码就是这个 https://github.com/apache/incubator-mxnet/tree/master/example/sparse/wide_deep,固定随机种子后其他不变,在model.py里面的任意一个FullyConnected变为hidden = mx.symbol.FullyConnected(data=hidden, num_hidden=hidden_units[1], attr={'lr_mult':'100',}),对结果没有影响,很奇怪。自己用module写一个mnist的mlp代码,加上lr_mult就是有用的,而在这个wide_deep中就是不起作用。

lr mult最好在var上加。

weight = mx.sym.var('weight', lr_mult=100)
hidden = mx.symbol.FullyConnected(data=hidden, weight=weight, num_hidden=hidden_units[1])

试过加在var上的,同样没有效果,在其他模型上lr_mult就能有作用

可能是哪里有bug吧,我找人看看

好的,麻烦了 :grinning:

请问这个问题是Bug吗

你这个问题有解决么?是怎么解决的?

請問這個問題解決了嗎?
我發現除了要在var裡面設定以外,在optimizer也要設定,
例如
opt = optimizer.SGD(<其他參數>, sym=model.symbol)
optimizer裡面的sym也要設定,
設定lr_mult=0之後測試看起來是有正常運作的。

请问这个解决了吗?到底怎么设置lr_mult啊?

建網路的時候:

加上設定optimizer的時候

先用0倍試試看有沒有效果吧