最近在用Imgnet2012 validation set跑定量实验时,没跑几个epoch就出现了内存爆满的情况
解决办法:
1. 将某个变量进行detach一下
2. 将使用到该变量的地方 ,print时,选择使用.item()来取值,而不是取tensor
这个问题得到解决,没几天出现了新的问题。。。经过排查,是因为将所有样本一次性计算损失并更一次,这样tensor的暴增必然会带来内存的暴增。。。
小节:一般更新梯度时,有三种方法:计算所有样本的损失并更一次,准确性高但计算成本高;随机梯度,也就是每个样本更一次,计算块但是不准确,有时不同样本的更新梯度会互相抵消;采用批处理,一批数据进行更一次,这样计算稳定且成本低。