解决pytorch训练的过程中内存一直增加的问题

这篇具有很好参考价值的文章主要介绍了解决pytorch训练的过程中内存一直增加的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

来自:解决pytorch训练的过程中内存一直增加的问题 - 知乎

pytorch训练中内存一直增加的原因(部分)

  • 代码中存在累加loss,但每步的loss没加item()
import torch
import torch.nn as nn
from collections import defaultdict

if torch.cuda.is_available():
    device = 'cuda'
else:
    device = 'cpu'

model = nn.Linear(100, 400).to(device)
criterion = nn.L1Loss(reduction='mean').to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

train_loss = defaultdict(float)
eval_loss = defaultdict(float)

for i in range(10000):
    model.train()
    x = torch.rand(50, 100, device=device)
    y_pred = model(x) # 50 * 400
    y_tgt = torch.rand(50, 400, device=device)

    loss = criterion(y_pred, y_tgt)
    optimizer.zero_grad()
    loss.backward()
    optimizer.step()
    
    # 会导致内存一直增加,需改为train_loss['loss'] += loss.item()
    train_loss['loss'] += loss

    if i % 100 == 0:
        train_loss = defaultdict(float)
        model.eval()
        x = torch.rand(50, 100, device=device)
        y_pred = model(x) # 50 * 400

        y_tgt = torch.rand(50, 400, device=device)
        loss = criterion(y_pred, y_tgt)

        # 会导致内存一直增加,需改为eval_loss['loss'] += loss.item()
        eval_loss['loss'] += loss
以上代码会导致内存占用越来越大,解决的方法是:train_l oss['loss'] += loss.item() 以及 eval_loss['loss'] += loss.item()。值得注意的是,要复现内存越来越大的问题,模型中需要切换model.train() 和 model.eval(),train_loss以及eval_loss的作用是保存模型的平均误差(这里是累积误差),保存到tensorboard中。

文章来源地址https://www.toymoban.com/news/detail-758453.html

到了这里,关于解决pytorch训练的过程中内存一直增加的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PyTorch深度学习实战(1)——神经网络与模型训练过程详解

    人工神经网络 ( Artificial Neural Network , ANN ) 是一种监督学习算法,其灵感来自人类大脑的运作方式。类似于人脑中神经元连接和激活的方式,神经网络接受输入,通过某些函数在网络中进行传递,导致某些后续神经元被激活,从而产生输出。函数越复杂,网络对于输入的数据拟

    2024年02月06日
    浏览(47)
  • pytorch 训练过程内存泄露/显存泄露debug记录:dataloader和dataset导致的泄露

    微调 mask-rcnn 代码,用的是 torchvision.models.detection.maskrcnn_resnet50_fpn 代码,根据该代码的注释,输入应该是: images, targets=None (List[Tensor], Optional[List[Dict[str, Tensor]]]) - Tuple[Dict[str, Tensor], List[Dict[str, Tensor]]] 所以我写的 dataset 是这样的: 大概思路是: 先把所有的标注信息读入内存

    2024年02月14日
    浏览(49)
  • 【pytorch】随着epoch增加,显存逐渐增加?解决pytorch显存释放问题

    在训练时,检测 “out of memory” 的error并通过torch.cuda.empty_cache()处理 如: 在测试时,避免忘记设置 torch.no_grad() 如: Pytroch - 显存释放问题

    2024年02月11日
    浏览(60)
  • (具体解决方案)训练GAN深度学习的时候出现生成器loss一直上升但判别器loss趋于0

    今天小陶在训练CGAN的时候出现了绷不住的情况,那就是G_loss(生成器的loss值)一路狂飙,一直上升到了6才逐渐平稳。而D_loss(判别器的loss值)却越来越小,具体的情况就看下面的图片吧。其实这在GAN训练里是非常容易遇到的问题,所以不用慌,是有解决的办法的。小陶就通

    2024年02月14日
    浏览(47)
  • 深度学习笔记--解决GPU显存使用量不断增加的问题

    目录 1--问题描述 2--问题解决 3--代码         基于 Pytorch 使用 VGG16 预训练模型进行分类预测时,出现 GPU 显存使用量不断增加,最终出现 cuda out of memory 的问题;         出现上述问题的原因在于:输入数据到网络模型进行推理时,会默认构建计算图,便于后续反向传播

    2024年02月17日
    浏览(42)
  • 解决yolo3目标检测训练过程中train.py运行问题

    yolo3是一种广泛使用的目标检测算法,它在计算机视觉领域具有很高的准确率和性能。然而,在使用yolo3进行目标检测训练时,有时会出现train.py运行问题。本文将探讨如何解决这个问题。 首先,让我们了解一下训练过程中可能遇到的常见问题: 缺少依赖项:运行train.py之前,

    2024年02月15日
    浏览(38)
  • 深度剖析 ThreadLocal 内存泄露问题及解决方案

    在多线程编程中, ThreadLocal 是一个常用的工具,用于在每个线程中维护独立的变量,避免了线程间的数据共享问题。然而,使用不当时, ThreadLocal 可能引发内存泄露,这是一个开发者们常常需要面对的难题。本文将深度剖析 ThreadLocal 内存泄露的原因,探讨解决方案,以及如

    2024年01月17日
    浏览(54)
  • 人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程

    大家好,我是微学AI,今天给大家介绍一下人工智能(pytorch)搭建模型9-pytorch搭建一个ELMo模型,实现训练过程,本文将介绍如何使用PyTorch搭建ELMo模型,包括ELMo模型的原理、数据样例、模型训练、损失值和准确率的打印以及预测。文章将提供完整的代码实现。 ELMo模型简介 数据

    2024年02月07日
    浏览(63)
  • PyTorch训练深度卷积生成对抗网络DCGAN

    将CNN和GAN结合起来,把监督学习和无监督学习结合起来。具体解释可以参见 深度卷积对抗生成网络(DCGAN) DCGAN的生成器结构: 图片来源:https://arxiv.org/abs/1511.06434 model.py 训练使用的数据集:CelebA dataset (Images Only) 总共1.3GB的图片,使用方法,将其解压到当前目录 图片如下图所

    2024年02月12日
    浏览(43)
  • 【深度学习】BasicSR训练过程记录,如何使用BasicSR训练GAN

    BasicSR支持两种灵活的使用场景,以满足用户不同的需求: 本地克隆仓库使用: 用户可以直接克隆BasicSR的本地仓库,查看完整的代码并进行修改,例如在BasicSR中训练SRGAN或StyleGAN2。安装方式包括先执行 git clone ,然后运行 python setup.py develop/install 。详细信息请参考安装指南。

    2024年01月23日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包