mindspore-lab / mindcv

A toolbox of vision models and algorithms based on MindSpore
https://mindspore-lab.github.io/mindcv/
Apache License 2.0
230 stars 139 forks source link

refactor(optimizer): change "filter_bias_and_bn" to "weight_decay_filter" #752

Closed sageyou closed 7 months ago

sageyou commented 8 months ago

Thank you for your contribution to the MindCV repo. Before submitting this PR, please make sure:

Motivation

Fix the bug with weight decay when set filter_bias_and_bn:

  1. When filter_bias_and_bn is True: function init_group_params does not set value of weight decay for no_decay_params, in this case, mindspore will use weight_decay of optimizer (usually not 0.0).
  2. When filter_bias_and_bn is False: mindspore will automatically filter BatchNorm params from weight_decay.

So the name of the argument is not the same as what it actually does. And we can never filter out the param of bias and norm layer from doing weight decay, as the name filter_bias_and_bn.

Due to this, we refactor it to weight_decay_filter:

How do I migrate from an old configuration? filter_bias_and_bn weight_decay_filter
True "disable"
False "auto"

Keep in mind that filter_bias_and_bn doesn't do what its name suggests.

BTW, we also support get no_weight_decay list from model and layer_decay.

Test Plan

(How should this PR be tested? Do you require special setup to run the test or repro the fixed bug?)

Related Issues and PRs

(Is this PR part of a group of changes? Link the other relevant PRs and Issues here. Use https://help.github.com/en/articles/closing-issues-using-keywords for help on GitHub syntax)