pytorch
文章平均质量分 61
CV/NLP大虾
https://github.com/hanhui269/
展开
-
Ubuntu18.04下编译安装torchvision
一、下载源码包NVIDIA 各种cuda下载包torchvison官网地址本次调用是CUDA,所以下载的的是0.8.1版本二、编译新建torchvision文件夹,用来存放最终的安装文件(将来调用是用的include和lib)mkdir buildcd build进入build文件夹后打开终端,开始进行编译(这里注意下:不要按照GitHub官方的教程来编译,那个教程的有些命令参数暂时不是很全,会报错的!)首先我们输入如下命令(注意把相关的路径修改为自己的路径):cmake -DCMAK原创 2021-08-06 10:55:00 · 1316 阅读 · 0 评论 -
caffe/pytorch各类预训练模型
TF2https://github.com/keras-team/keras-applicationspytorchtf1原创 2021-03-01 10:57:23 · 202 阅读 · 0 评论 -
CPP绑定到python端(1)
Python扩展模块简介Python与C/C++交互的方案有多种,如Python C API,SWIG,SIP,ctypes,cpython,cffi,boost.python等。Python只是一个语言规范,有很多具体实现,CPython是标准Python,由C编写,Python脚本被编译成CPython字节码,然后由虚拟机解释执行,垃圾回收使用引用计数,Python与C/C++混合编程本质是基于CPython解释器。其它的Python实现包括Jython、IronPython、PyPy、Pyston原创 2021-02-20 18:15:33 · 212 阅读 · 0 评论 -
Cmake使用
cmake初步使用project (HELLO) #指定项目名称,生成的VC项目的名称;>>使用${HELLO_SOURCE_DIR}表示项目根目录include_directories:指定头文件的搜索路径,相当于指定gcc的-I参数>> include_directories (${HELLO_SOURCE_DIR}/Hello) #增加Hello为include目录link_directories:动态链接库或静态链接库的搜索路径,相当于gcc的-L参数原创 2021-02-08 17:21:55 · 190 阅读 · 0 评论 -
pytorch-autograde-计算图的特点
在PyTorch实现中,autograd会随着用户的操作,记录生成当前variable的所有操作,并由此建立一个有向无环图。用户每进行一个操作,相应的计算图就会发生改变。更底层的实现中,图中记录了操作Function,每一个变量在图中的位置可通过其grad_fn属性在图中的位置推测得到。在反向传播过程中,autograd沿着这个图从当前变量(根节点\textbf{z}z)溯源,可以利用链式求导法则计算所有叶子节点的梯度。每一个前向传播操作的函数都有与之对应的反向传播函数用来计算输入的各个variable的梯原创 2021-01-08 15:39:44 · 399 阅读 · 0 评论 -
pytorch-autograde-计算图
定义requires_grad如果所有输入有任意子单元有requires_grad,则输出单元则也相应为requires_grad。import torchx = torch.randn(5, 5)y = torch.randn(5, 5)z = torch.randn((5, 5), requires_grad=True)a = x + zprint(a.requires_grad)对应的,则不需要进行梯度更新的则进行freeze。model = torchvision.models原创 2021-01-08 14:51:55 · 621 阅读 · 0 评论 -
2021-01-06
PyTorch模型转化到可部署模型import torchimport torchvision.models as modelsfrom PIL import Imageimport numpy as npimage = Image.open("build/airliner.jpg") #图片发在了build文件夹下image = image.resize((224, 224),Image.ANTIALIAS)image = np.asarray(image)image = image /原创 2021-01-06 14:05:19 · 83 阅读 · 0 评论 -
pytorch分布式训练(三DistributedDataParallel)
DistributedDataParallelDistributedDataParallel为pytorch分布式接口:model = torch.nn.parallel.DistributedDataParallel( model, device_ids=[args.local_rank], output_device=args.local_rank, # this should be removed if we update BatchNorm stats原创 2020-07-09 15:30:18 · 2269 阅读 · 0 评论 -
pytorch分布式训练(五DataLoader)
torch.utils.data.DataLoader本节讲述collate_fn使用。 def __init__(self, dataset, batch_size=1, shuffle=False, sampler=None, batch_sampler=None, num_workers=0, collate_fn=None, pin_memory=False, drop_last=False, timeout=0,原创 2020-07-09 10:51:33 · 833 阅读 · 0 评论 -
pytorch分布式训练(四Sampler介绍)
初步掌握pytorch分布式后(见文章1),接下来分析用到的类:一、DistributedSampler(Sampler)pytorch在对dataset进行Sampler时候,通过修改indics进行识别在哪个GPU上运行,代码如下。主要通过indices[self.rank:self.total_size:self.num_replicas]进行多GPU的index索引。#class DistributedSampler(Sampler):#train_sampler = torch.uti原创 2020-07-08 17:50:55 · 3997 阅读 · 0 评论 -
pytorch分布式训练(一)
torch.utils.data.DataLoader()样例:""" 批训练,把数据变成一小批一小批数据进行训练。 DataLoader就是用来包装所使用的数据,每次抛出一批数据"""import torchimport torch.utils.data as DataBATCH_SIZE = 5x = torch.linspace(1, 10, 10)y = torch.linspace(10, 1, 10)# 把数据放在数据库中torch_dataset = D.原创 2020-07-06 18:17:46 · 2987 阅读 · 6 评论 -
PyTorch梯度爆炸、loss反向传播为nan
在最近的项目中用到了自定义loss函数,代码一切都准备就绪后,在训练时遇到了梯度爆炸的问题,每次训练几个iterations后,梯度和loss都会变为nan。一般情况下,梯度中间部分值存在0情况,梯度就会产生nan,导致该层向前的层梯度和权重都为Nan参考文献:https://zhuanlan.zhihu.com/p/79046709...原创 2020-07-02 15:22:48 · 1352 阅读 · 0 评论 -
AdaptiveAvgPool2d
In [1]: import torchIn [2]: a = torch.rand([4,3,4,4])In [3]: a.size()Out[3]: torch.Size([4, 3, 4, 4])In [4]: b = torch.nn.functional.adaptive_avg_pool2d(a, (1,1)) # 自适应池化,指定池化输出尺寸为 1 * 1In [5]: b.size()Out[5]: torch.Size([4, 3, 1, 1])def _ma.原创 2020-06-23 14:35:58 · 814 阅读 · 0 评论 -
Pytorch模型中的parameter与buffer
Parameter 和 bufferIf you have parameters in your model, which should be saved and restored in the state_dict, but not trained by the optimizer, you should register them as buffers.Buffers won’t be returned in model.parameters(), so that the optimizer won’原创 2020-06-10 16:26:11 · 685 阅读 · 0 评论 -
pytorch中的Hook
pytorch中的钩子(Hook):torch.autograd.Variable.register_hooktorch.nn.Module.register_backward_hooktorch.nn.Module.register_forward_hook第一个是register_hook,是针对Variable对象的,后面的两个:register_backward_hook和register_forward_hook是针对nn.Module这个对象的。就是反向传播过程中,可以把中间量的梯度原创 2020-06-09 18:04:13 · 133 阅读 · 0 评论 -
mmdetection框架使用
参考:https://github.com/open-mmlab/mmdetection/blob/master/docs/install.md配置要求:• Linux (Windows is not officially supported)• Python 3.5+ (Python 2 is not supported)• PyTorch 1.1 or higher• CUDA 9.0 or higher• NCCL 2• GCC(G++) 4.9 or higher• mmcv• O原创 2020-05-14 11:35:58 · 315 阅读 · 0 评论 -
BatchNorm(Pytorch )
为什么使用BN?如果不进行Batch Norm,如果输入weight差别过大,在两个方向进行梯度下降,会出现梯度下降不平衡,在训练过程中不能稳定的收敛。目前已知的Normalization的方法有4种,对于输入数据为[,C,(H*W)](N代表tensor数量,C代表通道,H代表高,W代表宽。Batch Norm:对每一个批次(N个tensor)的每个通道分别计算均值mean和方差var,如[10,4,9] 最终输出是[0,1,2,3]这样的1*4的tensorLayer Norm:对于每一个t原创 2020-05-13 10:39:30 · 483 阅读 · 0 评论 -
pytorch实现straight-through estimator(STE)
现在深度学习中一般我们学习的参数都是连续的,因为这样在反向传播的时候才可以对梯度进行更新。但是有的时候我们也会遇到参数是离>散的情况,这样就没有办法进行反向传播了,比如二值神经网络。本文中讲解了如何用pytorch对二值化的参数进行梯度更新的straight-through estimator算法。Question:STE核心的思想就是我们的参数初始化的时候就是float这样的连续值,当...转载 2020-05-08 14:33:17 · 7529 阅读 · 2 评论 -
torch每层更正
对于torch每层:当设置第7层为1000时候,下一层为读入的为1000,所以fine-tune时候,需要重置2层。vgg.7.weighttorch.Size([1000, 128, 3, 3])vgg.7.biastorch.Size([1000])vgg.10.weighttorch.Size([256, 1000, 3, 3])vgg.10.biastorch.Size(...原创 2020-05-06 15:46:17 · 106 阅读 · 0 评论 -
nn.Conv2d卷积输入输出公式
注意事项:nn.Conv2d中的padding操作,pytorch同tensorflow不同,padding没有“SAME”和“VALID”选项,根据熟人padding=(X,Y)来决定在哪里进行padding。**则第一个参数表示高度(上下)上面的padding,第2个参数表示宽度(左右)上面的。**如下图...原创 2020-04-30 10:55:28 · 3824 阅读 · 0 评论 -
基于pytorch的矩阵操作
参考文章:https://www.haomeiwen.com/subject/qkwwyhtx.html后期用到的其它矩阵处理方式再新增:1原创 2020-04-13 18:31:24 · 612 阅读 · 0 评论 -
pytorch /datasets/transform
pytorch /datasets/transformpytorch数据集加工:通过__getitem__和__len__进行处理 def __getitem__(self, index): img, target = self.data[index], self.targets[index] img = Image.f...原创 2020-04-04 16:06:37 · 421 阅读 · 0 评论 -
einsum的使用
Pytorch中,numpy,tensorflow , einsum详解。https://zhuanlan.zhihu.com/p/74462893原创 2020-03-30 18:04:01 · 331 阅读 · 0 评论 -
pytorch 中buffer
其实和tensorflow中add_collection意义差不多我们知道,pytorch一般情况下,是将网络中的参数保存成OrderedDict形式的。这里额参数其实包括2种。一种:是模型中各种 module含的参数,即nn.Parameter,我们当然可以在网络中定义其他的nn.Parameter参数。;另外一种是buffer。前者每次optim.step会得到更新,而不会更新后者。cl...原创 2020-02-26 14:27:03 · 592 阅读 · 0 评论 -
安装albumentations-imgaug-pycocotools-conda install -c akode gym
conda install -c simpleitk simpleitk安装skimageconda install scikit-image安装albumentationsconda install albumentations -c albumentations原创 2020-01-20 11:09:06 · 3050 阅读 · 0 评论 -
pytorch load函数中cpu与gpu转化
cpu -> cpu或者gpu -> gpu:checkpoint = torch.load(‘modelparameters.pth’)model.load_state_dict(checkpoint)2. cpu -> gpu 1torch.load(‘modelparameters.pth’, map_location=lambda storage, loc: ...原创 2020-01-19 17:17:06 · 534 阅读 · 0 评论