pytorch学习笔记
坚硬果壳_
坦然接受自己的平庸并保持努力。
展开
-
Accelerate PyTorch training with torch-ort
原文链接:https://cloudblogs.microsoft.com/opensource/2021/07/13/accelerate-pytorch-training-with-torch-ort/训练深度学习模型需要不断增加的计算和内存资源。torch_ort加速PyTorch模型的分布式培训,减少训练所需的时间和资源。并且为了给开发者提供灵活性,torch-ort可用于NVIDIA和AMD的gpu,可以与DeepSpeed等其他深度学习优化器一起使用,在训练任务中提供额外的性能提升。OR原创 2021-07-19 10:20:49 · 1204 阅读 · 0 评论 -
torch.bmm
torch.bmm(batch1, batch2, out=None) → Tensor参数:batch1 (Tensor) – 第一批相乘矩阵 batch2 (Tensor) – 第二批相乘矩阵 out (Tensor, optional) – 输出张量举例 import torch batch1 = torch.randn(8, 2, 6) batch2 = torch.randn(8, 6, 10) res = torch.bmm(..转载 2020-11-14 18:25:15 · 343 阅读 · 0 评论 -
add_module(name,module)
将一个child module 添加到当前modle, 被添加的module可以通过name属性来获取import torch.nn as nnclass Model(nn.Module): def __init__(self): super(Model, self).__init__() self.add_module("conv", nn.Conv2d(10, 20, 4)) #self.conv = nn.Conv2d(10, 20,原创 2020-11-11 22:46:45 · 772 阅读 · 0 评论 -
cudnn.benchmark和cudnn.deterministic
问题在很多情况下我们都能看到代码里有这样一行:torch.backends.cudnn.benchmark = true 1 torch.backends.cudnn.benchmark = true 而且大家都说这样可以增加程序的运行效率。那到底有没有这样的效果,或者什么情况下应该这样做呢?解决办法总的来说,大部分情况下,设置这个 flag 可以让内置的 cuDNN 的 auto-tuner 自动寻找最适合当前配置的高效算法,来达到优化运行效率的转载 2020-11-11 22:21:36 · 1561 阅读 · 0 评论 -
【教程】基于Ubuntu系统的PyTorch虚拟环境配置
目录一、PyTorch虚拟环境配置 二、PyTorch虚拟环境使用 2.1 新建项目 2.2 历史项目 三、常用命令 3.1 虚拟环境相关 3.2 工具包相关 一、PyTorch虚拟环境配置 该部分操作均在终端(terminal)命令行中执行,在桌面右击鼠标新建terminal即可。 若系统已经安装Anaconda,则可以跳过第一步(检验方法:命令行执行conda list,有返回结果则表示已经安装了Anaconda)。 安装Anaconda。.转载 2020-10-31 11:31:24 · 1409 阅读 · 1 评论 -
torch.gather
官方说明gather可以对一个Tensor进行聚合,声明为:torch.gather(input, dim, index, out=None) → Tensor一般来说有三个参数:输入的变量input、指定在某一维上聚合的dim、聚合的使用的索引index,输出为Tensor类型的结果(index必须为LongTensor类型)。#参数介绍:input (Tensor) – The source tensordim (int) – The axis along which to inde转载 2020-10-11 09:56:37 · 148 阅读 · 0 评论 -
pytorch中index_select()的用法
a = torch.linspace(1, 12, steps=12).view(3, 4)print(a)b = torch.index_select(a, 0, torch.tensor([0, 2]))print(b)print(a.index_select(0, torch.tensor([0, 2])))c = torch.index_select(a, 1, torch.tensor([1, 3]))print(c)index_select():第一个参数是索引的对...原创 2020-10-10 09:43:26 · 459 阅读 · 0 评论 -
pytorch中torch.manual_seed()的理解
使用????:为CPU中设置种子,生成随机数 torch.manual_seed(number) 为特定GPU设置种子,生成随机数 torch.cuda.manual_seed(number) 为所有GPU设置种子,生成随机数 torch.cuda.manual_seed_all() 使用原因????:在需要生成随机数据的实验中,每次实验都需要生成数据。设置随机种子是为了确保每次生成固定的随机数,这就使得每次实验结果显示一致了,有利于实验的比较和改进。...转载 2020-09-24 00:22:49 · 786 阅读 · 0 评论 -
pytorch的两个函数 .detach() .detach_() 的作用和区别
当我们再训练网络的时候可能希望保持一部分的网络参数不变,只对其中一部分的参数进行调整;或者训练部分分支网络,并不让其梯度对主网络的梯度造成影响,这时候就需要使用detach()函数来切断一些分支的反向传播一、tensor.detach()返回一个新的tensor,从当前计算图中分离下来的,但是仍指向原变量的存放位置,不同之处只是requires_grad为false,得到的这个tensor永远不需要计算其梯度,不具有grad。即使之后重新将它的requires_grad置为true,它也不会.转载 2020-09-21 16:46:49 · 787 阅读 · 0 评论 -
PyTorch 模型训练实用教程(六):监控模型——可视化
本章将介绍如何在 PyTorch 中使用 TensorBoardX 对神经网络进行统计可视化,如Loss 曲线、Accuracy 曲线、卷积核可视化、权值直方图及多分位数折线图、特征图可视化、梯度直方图及多分位数折线图及混淆矩阵图等。TensorBoardXPyTorch 自身的可视化功能没有 TensorFlow 的 tensorboard 那么优秀,所以 PyTorch通常是借助 tensorboard(是借助,非直接使用)进行可视化,目前流行的有如下两种方法,本文仅介绍第二种——Ten...原创 2020-09-18 15:51:04 · 5233 阅读 · 0 评论 -
PyTorch 模型训练实用教程(五):优化器基类/十种优化器/六个学习率调整⽅法
目录优化器基类 Optimizer参数组(param_groups)的概念zero_grad()state_dict()load_state_dict(state_dict)add_param_group()step(closure)PyTorch 的⼗个优化器torch.optim.SGDtorch.optim.ASGDtorch.optim.Rproptorch.optim.Adagradtorch.optim.Adadeltatorch.opt.原创 2020-09-18 14:53:35 · 1643 阅读 · 1 评论 -
PyTorch 模型训练实用教程(四):损失函数
目录PyTorch 的⼗七个损失函数1. L1loss2. MSELoss3. CrossEntropyLoss4. NLLLoss5. PoissonNLLLoss6. KLDivLoss7. BCELoss8. BCEWithLogitsLoss9. MarginRankingLoss10. HingeEmbeddingLoss11. MultiLabelMarginLoss12. SmoothL1Loss13. SoftMarginLoss.原创 2020-09-09 22:56:06 · 2445 阅读 · 0 评论 -
PyTorch 模型训练实用教程(三):模型
1 模型的搭建 1.1 模型定义的三要素首先,必须继承 nn.Module 这个类,要让 PyTorch 知道这个类是一个 Module。 其次,在__init__(self)中设置好需要的“组件"(如 conv、pooling、Linear、BatchNorm等)。 最后,在 forward(self, x)中用定义好的“组件”进行组装,就像搭积木,把网络结构搭建出来,这样一个模型就定义好了class Net(nn.Module): def __init__(self):原创 2020-09-09 20:39:53 · 1687 阅读 · 0 评论 -
*号用法 如nn.Sequential(*layers)
形参——单个星号代表这个位置接收任意多个非关键字参数,转化成元组方式。实参——如果*号加在了是实参上,代表的是将输入迭代器拆成一个个元素。从nn.Sequential的定义来看,输入要么是orderdict,要么是一系列的模型,遇到list,必须用*号进行转化,否则会报错 TypeError: list is not a Module subclass# Example of using Sequential with OrderedDictmodel = nn.Sequential(O转载 2020-09-07 22:15:07 · 2032 阅读 · 0 评论 -
PyTorch 模型训练实用教程(二):数据
简介在 PyTorch 中,这些数据增强方法放在了 transforms.py 文件中。这些数据处理可以满足我们大部分的需求,我们也可以自定义 数据处理函数,实现自己的数据增强。# 数据预处理设置normMean = [0.4948052, 0.48568845, 0.44682974]normStd = [0.24580306, 0.24236229, 0.2603115]normTransform = transforms.Normalize(normMean, normStd)tr原创 2020-09-07 20:25:20 · 799 阅读 · 0 评论 -
VS Code报错Module ‘xx‘ has no ‘xx‘ member pylint(no-member)
最近发现vscode比较好用,像是介于ide和编辑器之间的一个工具,可以运行调试,支持多种语言,比较忙轻量化,不过在写python的时候发现红色提示problems,pylint(no-member)pylint是vscode的python语法检查器,pylint是静态检查,在用第三方库的时候有些成员只有在运行代码的时候才会被建立,它就找不到成员,在设置(settings.json)里添加"python.linting.pylintArgs": ["--generate-members"]转载 2020-09-07 17:51:04 · 142 阅读 · 0 评论 -
SciPy中imread,imresize,imsave函数弃用解决办法
SciPy最新官方文档的说明(20190730):Functions from scipy.interpolate (spleval, spline, splmake, and spltopp) and functions from scipy.misc (bytescale, fromimage, imfilter, imread, imresize, imrotate, imsave, imshow, toimage) have been removed. The former set has b转载 2020-09-07 17:28:08 · 1669 阅读 · 1 评论 -
Requirement already satisfied解决办法:pip install 工具包到指定目录
Requirement already satisfied: keras_utilities in /usr/local/lib/python3.5/dist-packages (0.5.0)我的虚拟环境路径:/home/SENSETIME/weihuaqiang/anaconda3/envs/pod/lib/python3.6/site-packages最近解决了一个让我比较头痛的问题:现在需要安装keras_utilities但是使用pycharm2018自动安装却找不到这个包但使用.原创 2020-09-07 17:15:34 · 3220 阅读 · 0 评论 -
PyTorch 模型训练实用教程(一):数据
目录Cifar10 转 png第一步:下载 cifar-10-python.tar.gz第二步:运行 1_1_cifar10_to_png.py主要模块scipy.misc.imsave()函数:pickle模块os.path.join训练集、验证集和测试集的划分主要模块glob模块shutil模块os.walk()方法split()和os.path.split()Cifar10 转 png为了统一数据,这里采用 cifar-10 的测试集,共..原创 2020-09-02 22:10:59 · 1948 阅读 · 1 评论 -
python3 pycharm安装opencv失败时的几种解决方案(其他任何安装模块都可参考)
问题:安装opencv超时最近在安装opencv出现安装不上,pycharm中的Terminal框中输入:pip install opencv-python最后一句是:ReadTimeoutError:HTTPSConnectionPool(host='files.pythonhosted.org', port=443): Read timed out.可知因网络原因读取超时导致下载失败,由于默认下载地址是国外的,下载速度非常慢,所以考虑使用国内镜像的地址来下载。国内镜像:http://pypi.转载 2020-08-10 00:27:59 · 2689 阅读 · 0 评论 -
PyTorch如何使用GPU加速(CPU与GPU数据的相互转换)
1.问题描述在进行深度学习开发时,GPU加速可以提升我们开发的效率,速度的对比可以参照这篇博文:[深度应用]·主流深度学习硬件速度对比(CPU,GPU,TPU)结论:通过对比看出相较于普通比较笔记本的(i5 8250u)CPU,一个入门级显卡(GPU MX150)可以提升8倍左右的速度,而高性能的显卡(GPU GTX1080ti)可以提升80倍的速度,如果采用多个GPU将会获得更快速度,所以经常用于训练的话还是建议使用GPU。在PyTorch中使用GPU和TensorFlow中不同,在TensorF转载 2020-08-05 15:56:40 · 1670 阅读 · 0 评论 -
PyTorch中Numpy,Tensor与Variable深入理解与转换技巧
pytorch中的变量有三个属性,分别是:data表示变量中的具体值, grad表示这个变量反向传播的梯度, grad_fn表示是通过什么操作得到这个变量的例如( 加减乘除、卷积、反置卷积)定义一个tensor(张量),以及将tensor(张量)转化成variable(变量)。之所以需要将tensor转化成variable是因为pytorch中tensor(张量)只能放在CPU上运算,而(variable)变量是可以只用GPU进行加速计算的。 所以说这就是为什么pytorch加载图像的时候一般转载 2020-08-05 15:25:22 · 575 阅读 · 0 评论 -
PyTorch基础教程学习笔记(八):训练一个分类器
数据应该怎么办呢?通常来说,当必须处理图像、文本、音频或视频数据时,可以使用python标准库将数据加载到numpy数组里。然后将这个数组转化成torch.*Tensor。对于图片,有Pillow,OpenCV等包可以使用 对于音频,有scipy和librosa等包可以使用 对于文本,不管是原生python的或者是基于Cython的文本,可以使用NLTK和SpaCy特别对于视觉方面,我们创建了一个包,名字叫torchvision,其中包含了针对Imagenet、CIFAR10、MNIST等常用原创 2020-08-05 15:15:43 · 709 阅读 · 0 评论 -
pytorch中的torchvision.transforms模块详解
torchvision.transformstorchvision.transforms是pytorch中的图像预处理包,包含了很多种对图像数据进行变换的函数,这些都是在我们进行图像数据读入步骤中必不可少的。data_transforms = transforms.Compose([ transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), transforms.ToT转载 2020-08-05 10:28:11 · 14606 阅读 · 3 评论 -
PyTorch基础教程学习笔记(七):神经网络
NEURAL NETWORKS 神经网络神经网络是由torch.nn包构造的.nn使用autograd定义模型和对模型做微分. 一个nn.module对象包含layers, 一个返回输出的forward(input)方法.例如, 看一个分类数字图片的网络:这是简单的前馈(feed-forward)网络. 它获取输入, 将它送给几个layer一层接一层的处理, 最后给出输出.一个典型的神经网络训练过程如下:定义神经网络, 含一些可学习的参数(权重) 在输入数据集上迭代 输入送入网原创 2020-08-04 10:58:37 · 489 阅读 · 0 评论 -
PyTorch基础教程学习笔记(六): nn.Module
前言:前面介绍了如何自定义一个模型——通过继承nn.Module类来实现,在__init__构造函数中申明各个层的定义,在forward中实现层之间的连接关系,实际上就是前向传播的过程。事实上,在pytorch里面自定义层也是通过继承自nn.Module类来实现的,pytorch里面一般是没有层的概念,层也是当成一个模型来处理的,这里和keras是不一样的。当然也可以直接通过继承torch.autograd.Function类来自定义一个层,但是这很不推荐,不提倡,至于为什么后面会介绍。记住一句话,k.转载 2020-08-01 16:45:49 · 1074 阅读 · 0 评论 -
PyTorch基础教程学习笔记(五): nn.Module
神经网络可以通过torch.nn 包来构建。神经网络基于自动梯度 (autograd)来定义一些模型。一个nn.Module 对象包含layers, 一个返回输出的forward(input)方法."""Pytorch中神经网络模块化接口nn的了解"""pytorch中对于一般的序列模型,直接使用torch.nn.Sequential类即可以实现,这点类似于keras,但是更多的时候面对复杂的模型,比如:多输入多输出、多分支模型、跨层连接模型、带有自定义层的模型等,就需要自己来定义一个模型了..转载 2020-08-01 14:59:20 · 333 阅读 · 1 评论 -
PyTorch基础教程学习笔记(四): nn.Sequential
前言:类似于keras中的序贯模型,当一个模型较简单的时候,我们可以使用torch.nn.Sequential类来实现简单的顺序连接模型。这个模型也是继承自Module类的,关于这个类,后面的文章会详细介绍。关于Sequential类的简介先来看一下它的定义吧,在之前,我们首先需要明确一个特别重要的观念,那就是——torch的核心是Module类,Module类在下面这个模块中:D:\ProgramData\Anaconda3\envs\pytorch1.1.0\Lib\site-pa..转载 2020-08-01 14:24:05 · 1551 阅读 · 1 评论 -
PyTorch基础教程学习笔记(三):pytorch搭建模型的的五大层次级别(由浅入深)
前言:神经网络的搭建本身是一个较为复杂的过程,但是现在有非常多的、非常人性化的开源框架提供给我们使用,但是即便如此,网络的搭建也是有多种方法可以选择,本文以pytorch为例子加以说明。神经网络的基本流程可以分为两大步骤,即网络结构搭建+参数的梯度更新(后者又包括 “前向传播+计算参数的梯度+梯度更新”)这其实也是后面pytorch搭建神经网络的一个基本思路原始搭建——使用numpy实现# -*- coding: utf-8 -*-import numpy as np #...原创 2020-08-01 12:11:35 · 662 阅读 · 0 评论 -
pytorch求导
pytorch求导主要记录一下backward()函数以及torch.autograd.grad()函数的使用,并重点探究一下对应的creat_graph以及retain_graph参数的使用。首先定义函数import torchfrom torch.autograd import Variabledef f(x): y = x ** 3 return y1. backward()主要用于对loss的求导,并将求出的梯度存入叶子节点对应的buffer内。其中,ret转载 2020-07-31 14:53:17 · 1905 阅读 · 1 评论 -
PyTorch基础教程学习笔记(二):自动微分
autograd 包是 PyTorch 中所有神经网络的核心,为 Tensors 上的所有操作提供自动微分。它是一个由运行定义的框架,这意味着以代码运行方式定义你的后向传播,并且每次迭代都可以不同。TENSORtorch.Tensor 是包的核心类。如果将其属性.requires_grad 设置为 True,则会开始跟踪针对 tensor 的所有操作。 完成计算后,可以调用 .backward() 来自动计算所有梯度。该张量的梯度将累积到 .grad 属性中。 要停止 tensor ...原创 2020-07-31 14:22:35 · 769 阅读 · 0 评论 -
PyTorch基础教程学习笔记(一):基本知识
介绍PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序。它主要由Facebookd的人工智能小组开发,不仅能够 实现强大的GPU加速,同时还支持动态神经网络,PyTorch提供了两个高级功能:具有强大的GPU加速的张量计算(如Numpy) 包含自动求导系统的深度神经网络除了Facebook之外,Twitter、GMU和Salesforce等机构都采用了PyTorch。优势支持GPU 灵活,支持动态神经网络 底层代码易于理解 命令式体验原创 2020-07-31 11:39:32 · 256 阅读 · 0 评论