Closed LemonQC closed 1 year ago
需要把loss这里修改一下。 因为当batch变小的时候,可能出现所有样本的梯度都被剔除掉,导致分母为0了,所以出现nan。
仍然是nan,因为batch太小可能识别不到biased sample,是否还需要把下边两句也加入eps,我之前修改加入1e-3,效果差距很大
我之前跑的时候就根据这个截图修改跑的,然后就没遇到过nan了。 确实loss_logits那两项的分母存在等于0的情况。1e-3可能值有点大了吧,你统一改为1e-5吧
但是性能差距很大,这是batch为32的时候
emm,我跑的时候没遇到过这个问题,那要不取消掉你说的影响性能的eps,然后换一下seed,相当于把数据的输入顺序变了一下,避开出现分母为0的情况,看看结果
那batch等1的时候也会出现把,因为bias_sample的mask和loss_mask正好相反
我尝试更换了好几个seed,都会出现nan的问题
稍等,我找到跑小batch的文件了,现在这个文件是大batch下的,基本不会出现nan。 我一会push一下代码。还有就是batch size为1的我换了一份文件。。
好的
已更新
当batch为64的时候,效果好像很差
有修改learning rate吗? 我们这里是越大的batch,learning rate就越大,因为batch越大,梯度越准。 这是我实验中使用的learning rate,对应不同的batch大小,供参考 | Batch | Learning rate |
---|---|---|
1 | 0.0002 | |
2 | 0.0005 | |
4 | 0.001 | |
8 | 0.001 | |
16 | 0.0015 | |
32 | 0.002 | |
64 | 0.003 | |
128 | 0.004 | |
256 | 0.005 | |
512 | 0.01 | |
1024 | 0.02 |
谢谢,重新修改学习率后,是正常的了
下图为当batch==2的时候, 梯度直接变为nan