Pytorch之contiguous的用法

contiguous

tensor变量调用contiguous()函数会使tensor变量在内存中的存储变得连续。

contiguous():view只能用在contiguous的variable上。如果在view之前用了transpose, permute等,需要用contiguous()来返回一个contiguous copy。

一种可能的解释是:

有些tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()操作依赖于内存是整块的,这时只需要执行contiguous()这个函数,把tensor变成在内存中连续分布的形式。

is_contiguous

判断是否contiguous用torch.Tensor.is_contiguous()函数。

import torch
x = torch.ones(10, 10)
x.is_contiguous() # True
x.transpose(0, 1).is_contiguous() # False
x.transpose(0, 1).contiguous().is_contiguous() # True

在pytorch的最新版本0.4版本中,增加了torch.reshape(), 这与 numpy.reshape 的功能类似。它大致相当于 tensor.contiguous().view()

以上这篇Pytorch之contiguous的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • pytorch sampler对数据进行采样的实现

    PyTorch中还单独提供了一个sampler模块,用来对数据进行采样.常用的有随机采样器:RandomSampler,当dataloader的shuffle参数为True时,系统会自动调用这个采样器,实现打乱数据.默认的是采用SequentialSampler,它会按顺序一个一个进行采样.这里介绍另外一个很有用的采样方法: WeightedRandomSampler,它会根据每个样本的权重选取数据,在样本比例不均衡的问题中,可用它来进行重采样. 构建WeightedRandomSampler时

  • pytorch torch.expand和torch.repeat的区别详解

    1.torch.expand 函数返回张量在某一个维度扩展之后的张量,就是将张量广播到新形状.函数对返回的张量不会分配新内存,即在原始张量上返回只读视图,返回的张量内存是不连续的.类似于numpy中的broadcast_to函数的作用.如果希望张量内存连续,可以调用contiguous函数. 例子: import torch x = torch.tensor([1, 2, 3, 4]) xnew = x.expand(2, 4) print(xnew) 输出: tensor([[1, 2, 3,

  • 使用pytorch实现可视化中间层的结果

    摘要 一直比较想知道图片经过卷积之后中间层的结果,于是使用pytorch写了一个脚本查看,先看效果 这是原图,随便从网上下载的一张大概224*224大小的图片,如下 网络介绍 我们使用的VGG16,包含RULE层总共有30层可以可视化的结果,我们把这30层分别保存在30个文件夹中,每个文件中根据特征的大小保存了64~128张图片 结果如下: 原图大小为224224,经过第一层后大小为64224*224,下面是第一层可视化的结果,总共有64张这样的图片: 下面看看第六层的结果 这层的输出大小是 1

  • Pytorch之contiguous的用法

    contiguous tensor变量调用contiguous()函数会使tensor变量在内存中的存储变得连续. contiguous():view只能用在contiguous的variable上.如果在view之前用了transpose, permute等,需要用contiguous()来返回一个contiguous copy. 一种可能的解释是: 有些tensor并不是占用一整块内存,而是由不同的数据块组成,而tensor的view()操作依赖于内存是整块的,这时只需要执行contiguo

  • Pytorch之Variable的用法

    1.简介 torch.autograd.Variable是Autograd的核心类,它封装了Tensor,并整合了反向传播的相关实现 Variable和tensor的区别和联系 Variable是篮子,而tensor是鸡蛋,鸡蛋应该放在篮子里才能方便拿走(定义variable时一个参数就是tensor) Variable这个篮子里除了装了tensor外还有requires_grad参数,表示是否需要对其求导,默认为False Variable这个篮子呢,自身有一些属性 比如grad,梯度vari

  • PyTorch中permute的用法详解

    permute(dims) 将tensor的维度换位. 参数:参数是一系列的整数,代表原来张量的维度.比如三维就有0,1,2这些dimension. 例: import torch import numpy as np a=np.array([[[1,2,3],[4,5,6]]]) unpermuted=torch.tensor(a) print(unpermuted.size()) # --> torch.Size([1, 2, 3]) permuted=unpermuted.permute(

  • Pytorch 中retain_graph的用法详解

    用法分析 在查看SRGAN源码时有如下损失函数,其中设置了retain_graph=True,其作用是什么? ############################ # (1) Update D network: maximize D(x)-1-D(G(z)) ########################### real_img = Variable(target) if torch.cuda.is_available(): real_img = real_img.cuda() z = V

  • Pytorch maxpool的ceil_mode用法

    pytorch里面的maxpool,有一个属性叫ceil_mode,这个属性在api里面的解释是 ceil_mode: when True, will use ceil instead of floor to compute the output shape 也就是说,在计算输出的shape的时候,如果ceil_mode的值为True,那么则用天花板模式,否则用地板模式. ??? 举两个例子就明白了. # coding:utf-8 import torch import torch.nn as

  • Pytorch mask_select 函数的用法详解

    非常简单的函数,但是官网的介绍令人(令我)迷惑,所以稍加解释. mask_select会将满足mask(掩码.遮罩等等,随便翻译)的指示,将满足条件的点选出来. 根据掩码张量mask中的二元值,取输入张量中的指定项( mask为一个 ByteTensor),将取值返回到一个新的1D张量, 张量 mask须跟input张量有相同数量的元素数目,但形状或维度不需要相同 x = torch.randn(3, 4) x 1.2045 2.4084 0.4001 1.1372 0.5596 1.5677

  • pytorch torchvision.ImageFolder的用法介绍

    torchvision.datasets Datasets 拥有以下API: __getitem__ __len__ Datasets都是 torch.utils.data.Dataset的子类,所以,他们也可以通过torch.utils.data.DataLoader使用多线程(python的多进程). 举例说明: torch.utils.data.DataLoader(coco_cap, batch_size=args.batchSize, shuffle=True, num_workers

  • 基于pytorch中的Sequential用法说明

    class torch.nn.Sequential(* args) 一个时序容器.Modules 会以他们传入的顺序被添加到容器中.当然,也可以传入一个OrderedDict. 为了更容易的理解如何使用Sequential, 下面给出了一个例子: # Example of using Sequential model = nn.Sequential( nn.Conv2d(1,20,5), nn.ReLU(), nn.Conv2d(20,64,5), nn.ReLU() ) # Example o

  • pytorch中的weight-initilzation用法

    pytorch中的权值初始化 官方论坛对weight-initilzation的讨论 torch.nn.Module.apply(fn) torch.nn.Module.apply(fn) # 递归的调用weights_init函数,遍历nn.Module的submodule作为参数 # 常用来对模型的参数进行初始化 # fn是对参数进行初始化的函数的句柄,fn以nn.Module或者自己定义的nn.Module的子类作为参数 # fn (Module -> None) – function t

  • Pytorch学习之torch用法----比较操作(Comparison Ops)

    1. torch.eq(input, other, out=None) 说明: 比较元素是否相等,第二个参数可以是一个数,或者是第一个参数同类型形状的张量 参数: input(Tensor) ---- 待比较张量 other(Tenosr or float) ---- 比较张量或者数 out(Tensor,可选的) ---- 输出张量 返回值: 一个torch.ByteTensor张量,包含了每个位置的比较结果(相等为1,不等为0) >>> a = torch.Tensor([[1, 2

随机推荐