如何解决pytorch训练过程中内存一直增大直到爆炸。
train.py。
·
注意:本方法不适用于全部问题,仅为本人实验过程中遇到问题进行解决的记录。
问题出现于训练代码train.py中
- 出现问题代码 ,问题出现在倒数第二行。
model.train()
for i, pack in enumerate(train_tbar):
batch_size = pack[0].size(0)
optimizer.zero_grad()
images, gts = pack
images = Variable(images)
gts = Variable(gts)
images = images.cuda()
gts = gts.cuda()
atts = model(images)
loss1 = criterion(atts, gts)
loss = loss1
loss.backward()
optimizer.step()
now_train_loss += loss * batch_size
now_iter_size += batch_size
- 如何修改? ,将原先的代码修改为如下,即可解决。
now_train_loss += loss.item() * batch_size
- 为什么这么修改? ,
loss.item() 是 PyTorch 中 Tensor 对象的方法,它将张量中的单个值转换为一个 Python 标量。这个方法常用于从包含标量的张量中提取数值,以便进行进一步处理或记录。
根据网上评论得知:如不修改,Loss张量会一直累积在内存中,导致内存逐渐增大。(不知真假)
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)