首页 > 其他分享 >pytorch

pytorch

时间:2023-07-05 17:11:48浏览次数:32  
标签:loss train batch loader pytorch experiment model

model.train()的作用是启用 Batch Normalization 和 Dropout。

model.eval()的作用是不启用 Batch Normalization 和 Dropout。

训练流程:

def train(model, optimizer, epoch, train_loader, validation_loader):
    for batch_idx, (data, target) in experiment.batch_loop(iterable=train_loader):
    	model.train() # 正确的位置,保证每一个batch都能进入model.train()的模式
        data, target = Variable(data), Variable(target)
        # Inference
        output = model(data)  # 计算模型结果
        loss_t = F.nll_loss(output, target) # 计算loss
        # The iconic grad-back-step trio
        optimizer.zero_grad()  # 梯度清零
        loss_t.backward() # loss反向传播
        optimizer.step()    # 参数优化
        if batch_idx % args.log_interval == 0:
            train_loss = loss_t.item()
            train_accuracy = get_correct_count(output, target) * 100.0 / len(target)
            experiment.add_metric(LOSS_METRIC, train_loss)
            experiment.add_metric(ACC_METRIC, train_accuracy)
            print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(
                epoch, batch_idx, len(train_loader),
                100. * batch_idx / len(train_loader), train_loss))
            with experiment.validation():
                val_loss, val_accuracy = test(model, validation_loader) # ????????????
                experiment.add_metric(LOSS_METRIC, val_loss)
                experiment.add_metric(ACC_METRIC, val_accuracy)

  

如果不在意显存大小和计算时间的话,仅仅使用model.eval()已足够得到正确的validation/test的结果; 而with torch.no_grad()则是更进一步加速和节省gpu空间(因为不用计算和存储梯度),从而可以更快计算,也可以跑更大的batch来测试。

 

标签:loss,train,batch,loader,pytorch,experiment,model
From: https://www.cnblogs.com/qiaoqifa/p/17529046.html

相关文章

  • 【本周特惠课程】深度学习6大模型部署场景(Pytorch+NCNN+MNN+Tengine+TensorRT+微信小
    前言欢迎大家关注有三AI的视频课程系列,我们的视频课程系列共分为5层境界,内容和学习路线图如下:第1层:掌握学习算法必要的预备知识,包括Python编程,深度学习基础,数据使用,框架使用。第2层:掌握CV算法最底层的能力,包括模型设计基础,图像分类,模型分析。第3层:掌握CV算法最核心的方向,包括图像分......
  • 先验框的生成(Pytorch)
      在学习动手学CV-Pytorch的先验框部分内容时,需要生成一个先验框,这里在学习后对先验框以及生成的代码做解释。关于先验框  在众多目标检测模型模型中,都有先验框的存在,在FasterRCNN中称之为锚点(Anchor),在SSD中称之为先验框(priorboundingbox)。简单来讲,先验框就是预先设......
  • AI_Pytorch_参数空间
    AI算法构成DatasetModelTrainInferDeploy解耦:模型训练过程中保存的模型文件是包含前向预测和反向传播的过程,在实际的工业部署则不需要反向传播,因此需要将模型进行导成部署需要的模型格式配置化:配置都会包含三个主要内容:数据配置、网络模型、训练策略Mod......
  • pytorch的学习
    三种编译方式的优缺点 Pytroch中的加载数据主要涉及了两个类,一个叫Dataset,一个叫Dataloader.举一个不恰当的例子,我们要在诸多的垃圾(数据)中找到我们所需要的垃圾(数据),Dataset就是将其中的可回收垃圾提取出来,并且将它们进行编号,同时可以根据编号获取相对应的垃圾,同时获取相......
  • PyTorch项目实战09——CIFAR10数据的读取和展示
    1CIFAR10cifar10的官方网址:<http://www.cs.toronto.edu/~kriz/cifar.html>是由32\*32像素的60000张图片组成的数据集,50000张图片用于训练,10000张图片用于测试,其中有10个类别,每个类别有6000张图片,分类之间彼此独立,不会重叠,因此是一个单标签多分类的问题。2读取CIFAR10数据首先在......
  • 03常用pytorch剪枝工具
    常用剪枝工具pytorch官方案例importtorch.nn.utils.pruneaspruneimporttorchfromtorchimportnnimporttorch.nn.utils.pruneaspruneimporttorch.nn.functionalasFprint(torch.__version__)device=torch.device("cuda"iftorch.cuda.is_available()els......
  • pytorch保存单通道灰度图片
    前言importtorchimporttorchvision.transformsastransformsfromtorchvision.utilsimportsave_imageimage=torch.randn(1,256,256)#示例,随机生成一个单通道图像#将图像张量保存为文件save_image(image,"single_channel_image.png",normalize=True)pytorch中......
  • 怎样导入pytorch gpu版本?
    1.下载anaconda2.在anaconda里创建环境create-npytorch_gpu#激活环境condaactivatepytorch_gpu3.在环境里install修改镜像接下来就是关键一步了,把-cpytorch表示的pytorch源,更改为国内的镜像。https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/先浏......
  • 使用numpy实现bert模型,使用hugging face 或pytorch训练模型,保存参数为numpy格式,然后使
     之前分别用numpy实现了mlp,cnn,lstm,这次搞一个大一点的模型bert,纯numpy实现,最重要的是可在树莓派上或其他不能安装pytorch的板子上运行,推理数据本次模型是随便在huggingface上找的一个新闻评论的模型,7分类看这些模型参数,这并不重要,模型占硬盘空间都要400+Mbert.embeddings.w......
  • 机器学习之pytorch环境配置以及cuda安装
     关于conda环境下安装cuda配置和pytorch安装cuda查看显卡型号 (进入cmd环境下) nvidia-smi 下载对应的cudaCUDA Toolkit Archive | NVIDIA Developer)选择与cuda相匹配的版本(版本尽量靠近些电脑的)建议使用迅雷下载,网站下载会限速正式安装安装路径的选择,......