Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

在我的cnn模型中,lr=0.01时,在20-30epoch,map可以提升的很快但是后续会成为NAN。但是如果使用0.001不会直接为NAN,但是效果不好,请问这个现象代表着什么问题?谢谢! #42

Open
liiicon opened this issue Dec 10, 2023 · 4 comments

Comments

@liiicon
Copy link

liiicon commented Dec 10, 2023

IMG_20231210_230427.jpg

@XingyuXie
Copy link
Collaborator

请问,效果不好,是最终的效果不好,还是说开始的效果不好?

请问其他关于lr以及优化器的参数方便提供一下吗?并且baseline相关的参数也可以提供。

@liiicon
Copy link
Author

liiicon commented Dec 10, 2023

请问,效果不好,是最终的效果不好,还是说开始的效果不好?

请问其他关于lr以及优化器的参数方便提供一下吗?并且baseline相关的参数也可以提供。

adan使用lr=0.001,betas=(0.98, 0.92, 0.99),最终map会降低1%左右。IMG_20231211_025819.jpg

绿色是baseline使用的SGD,lr=0.01,momentum=0.999。当我的模型中backbone使用THU的纯卷积搭建的重参数化Repvit时,使用adan=0.01在训练中途直接NAN。是否是因为RepDWConv?

@XingyuXie
Copy link
Collaborator

XingyuXie commented Dec 11, 2023

应该不是DWconv的问题,看样子Adan像过拟合了。可以尝试:

  1. 加一点weight_decay: weight_decay=0.01
  2. 或者grad_clip: max_grad_norm=1.0或者0.5或者0.1
  3. 调整beta3: betas=(0.98, 0.92, 0.999),你也可以试着调整beta1,Adan的beta1等价于Adam的beta1或者SGD的momentum。不过我的经验是,Adan beta1不是特别敏感。
  4. 可以引入Warmup lr的机制,将lr逐步增大到你想要的值。

个人觉得前3条能解决你的问题。

另外,SGD的momentum用0.999的话,很奇怪,0.999基本上是完全抛弃了后边的梯度。大部分SGD的momentum都在0.9-0.95之间。

@liiicon
Copy link
Author

liiicon commented Dec 11, 2023

应该不是DWconv的问题,看样子Adan像过拟合了。可以尝试:

  1. 加一点weight_decay: weight_decay=0.01
  2. 或者grad_clip: max_grad_norm=1.0或者0.5或者0.1
  3. 调整beta3: betas=(0.98, 0.92, 0.999),你也可以试着调整beta1,Adan的beta1等价于Adam的beta1或者SGD的momentum。不过我的经验是,Adan beta1不是特别敏感。
  4. 可以引入Warmup lr的机制,将lr逐步增大到你想要的值。

个人觉得前3条能解决你的问题。

另外,SGD的momentum用0.999的话,很奇怪,0.999基本上是完全抛弃了后边的梯度。大部分SGD的momentum都在0.9-0.95之间。

十分感谢您的建议!我试着尝试一下

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants