Zhiquan-Wen / TDS

Pytorch Implementation for "Test-Time Model Adaptation for Visual Question Answering with Debiased Self-Supervisions" (IEEE TMM 2023).
BSD 3-Clause "New" or "Revised" License
3 stars 1 forks source link

当batch设置为比64小的时候,出现梯度消失的问题? #3

Closed LemonQC closed 1 year ago

LemonQC commented 1 year ago

下图为当batch==2的时候, image 梯度直接变为nan

Zhiquan-Wen commented 1 year ago

image 需要把loss这里修改一下。 因为当batch变小的时候,可能出现所有样本的梯度都被剔除掉,导致分母为0了,所以出现nan。

LemonQC commented 1 year ago

仍然是nan,因为batch太小可能识别不到biased sample,是否还需要把下边两句也加入eps,我之前修改加入1e-3,效果差距很大

Zhiquan-Wen commented 1 year ago

我之前跑的时候就根据这个截图修改跑的,然后就没遇到过nan了。 确实loss_logits那两项的分母存在等于0的情况。1e-3可能值有点大了吧,你统一改为1e-5吧

LemonQC commented 1 year ago

但是性能差距很大,这是batch为32的时候 image

Zhiquan-Wen commented 1 year ago

emm,我跑的时候没遇到过这个问题,那要不取消掉你说的影响性能的eps,然后换一下seed,相当于把数据的输入顺序变了一下,避开出现分母为0的情况,看看结果

LemonQC commented 1 year ago

那batch等1的时候也会出现把,因为bias_sample的mask和loss_mask正好相反

LemonQC commented 1 year ago

我尝试更换了好几个seed,都会出现nan的问题

Zhiquan-Wen commented 1 year ago

稍等,我找到跑小batch的文件了,现在这个文件是大batch下的,基本不会出现nan。 我一会push一下代码。还有就是batch size为1的我换了一份文件。。

LemonQC commented 1 year ago

好的

Zhiquan-Wen commented 1 year ago

已更新

LemonQC commented 1 year ago

当batch为64的时候,效果好像很差 image

Zhiquan-Wen commented 1 year ago
有修改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
LemonQC commented 1 year ago

谢谢,重新修改学习率后,是正常的了