Ubuntu系统训练Pytorch模型时被kill的问题
最近在训练一个pytorch模型时,出现程序被ubuntu系统kill的问题,问题截图如下:

训练到一定轮次,系统内容似乎就被占满了,导致程序被kill。
查询原因时,发现是因为在累加loss时忘记使用loss.item(),直接使用了loss累加:
原版:
avgloss.update(loss, image.size(0))
将其修改为:
avgloss.update(loss.item(), image.size(0)) # 这里loss要加.item(),否则占用内存会越来越大,导致程序被kill
原因分析:
这是因为输出的loss的数据类型是Variable。而PyTorch的动态图机制就是通过Variable来构建图。主要是使用Variable计算的时候,会记录下新产生的Variable的运算符号,在反向传播求导的时候进行使用。如果这里直接将loss加起来,系统会认为这里也是计算图的一部分,也就是说网络会一直延伸变大那么消耗的显存也就越来越大。
参考链接:https://blog.csdn.net/qq_35899290/article/details/103549280