Closed jiaosiyu1999 closed 1 year ago
上述三种设定对应的svf_modules函数分别为:
您代码的默认设置
你答复下
-----------
Zechao Li Professor https://zechao-li.github.io/ Intelligent Media Analysis Group
School of Computer Science and Engineering
Nanjing University of Science and Technology
------------------ Original ------------------ From: @.>; Date: Thu, Dec 22, 2022 11:35 PM To: @.>; Cc: @.***>; Subject: [zechao-li/SVF-few-shot-segmentation] 【显存异常增长】关于设置vector_S的param.requires_grad前后的显存奇怪变化现象 (Issue #2)
您好! 我想关于vector_S的param.requires_grad向您请教一个问题 (例如这里)
我发现在batchsize为2时,
设置layer2,3,4的param.requires_grad=False时,大约需要3300M显存。
若进一步设置vector_S的梯度为True,显存涨到7200M。
若设置layer2,34的梯度全为true,显存为7300M
也就是说,解冻vector_S的参数会增加大约4000M显存,而进一步解冻conv_U和conv_V仅增加100M的显存,我不清楚这一现象的原因,希望能够得到您的解答,谢谢!
— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you are subscribed to this thread.Message ID: @.***>
@jiaosiyu1999 你好,这是很正常的现象。显存的增长的多少主要是由于梯度反传的路径长短决定的。只要将vector_S解冻后,梯度就要传播到layer2中,相比较于freeze backbone肯定会增长很大的显存。这也是后续我们要优化的部分。进一步解冻conv_U和conv_V后梯度同样也是只传播到layer2,因此显存并不会有很大的变化。
好的,谢谢解答
您好! 我想关于vector_S的param.requires_grad向您请教一个问题 (例如这里)
我发现在batchsize为2时,
也就是说,解冻vector_S的参数会增加大约4000M显存,而进一步解冻conv_U和conv_V仅增加100M的显存,我不清楚这一现象的原因,希望能够得到您的解答,谢谢!