中文文档:

contiguous() → Tensor
        返回一个内存连续的有相同数据的 tensor,如果原 tensor 内存连续则返回原 tensor

英文文档:

contiguous() → Tensor
        Returns a contiguous tensor containing the same data as self tensor. If self tensor is contiguous, this function returns the self tensor.

常见用法:

contiguous 一般用于 transpose/permute 后和 view 前,即使用 transpose 或 permute 进行维度变换后,调用 contiguous,然后方可使用 view 对维度进行变形(如:tensor_var.contiguous().view() ),示例如下:

x = torch.Tensor(2,3)
y = x.permute(1,0)         # permute:二维tensor的维度变换,此处功能相当于转置transpose
y.view(-1)                 # 报错,view使用前需调用contiguous()函数
y = x.permute(1,0).contiguous()
y.view(-1)                 # OK

两个可能原因

  1. view 函数只能用于 contiguous 后的 tensor 上,也就是只能用于内存中连续存储的 tensor。如果对 tensor 调用过 transpose, permute 等操作的话会使该 tensor 在内存中变得不再连续,此时就不能再调用 view 函数。因此,需要先使用 contiguous 来返回一个 contiguous copy。
  2. 维度变换后的变量是之前变量的浅拷贝,指向同一区域,即 view 操作会连带原来的变量一同变形,这是不合法的,所以也会报错。(这个解释有部分道理,也即 contiguous 返回了 tensor 的深拷贝 contiguous copy 数据)

参考文章

  1. https://zhuanlan.zhihu.com/p/64376950
  2. https://blog.csdn.net/qq_37385726/article/details/81738518

PyTorch torch.Tensor.contiguous() 用法与理解相关推荐

  1. 【Pytorch】Tensor.contiguous()使用与理解

    官方文档地址:https://pytorch.org/docs/stable/generated/torch.Tensor.contiguous.html?highlight=torch%20cont ...

  2. pytorch中的torch.tensor.repeat以及torch.tensor.expand用法

    文章目录 torch.tensor.expand torch.tensor.repeat torch.tensor.expand 先看招 import torch x = torch.tensor([ ...

  3. pytorch torch.Tensor.numpy()(从张量创建一个numpy数组,数组和张量共享相同内存)

    https://pytorch.org/docs/1.1.0/tensors.html?highlight=numpy#torch.Tensor.numpy numpy() → numpy.ndarr ...

  4. pytorch torch.Tensor.clone()(返回张量自身的副本。 副本具有与自身相同的大小和数据类型。)

    https://pytorch.org/docs/1.1.0/tensors.html?highlight=clone#torch.Tensor.clone clone() → Tensor Retu ...

  5. pytorch torch.Tensor.new_ones()(返回一个与size大小相同的用1填充的张量。 默认返回的Tensor具有与此张量相同的torch.dtype和torch.device)

    from https://pytorch.org/docs/1.1.0/tensors.html?highlight=new_ones#torch.Tensor.new_ones new_ones(s ...

  6. PyTorch | torch.tensor使用方法,如何使用torch.tensor

    公众号[计算机视觉联盟]后台回复[PyTorch]可以获得PyTorch学习教程pdf版 通过torch.tensor创建张量 arr = np.ones((3,3)) print("由np ...

  7. pytorch torch.Tensor.view

    应用 >>> x = torch.randn(4, 4) >>> x.size() torch.Size([4, 4]) >>> y = x.vi ...

  8. pytorch torch.tensor

    应用 torch.tensor([[0.1, 1.2], [2.2, 3.1], [4.9, 5.2]]) ---------------------------------------------- ...

  9. Pytorch——torch.Tensor.data操作的含义

    1 致谢 感谢陈助教的帮助! 2 前言 今天在学习FaceBoxes~ 看到一句代码不是很懂, prior_data = priors.data 因为data是torch.Tensor类的一个成员变量 ...

最新文章

  1. hbase RowFilter如何根据rowkey查询以及实例实现代码
  2. 回归架构本真:从规划、思维到设计,构建坚不可摧的架构根基
  3. Python学习笔记:装饰器
  4. 深入理解spark两种调度模式:FIFO,FAIR模式
  5. mysql6支持connect by_mysql 实现oracle start with connect by递归
  6. 我的Android进阶之旅------Android MediaPlayer播放网络音频的实例--网络mp3播放器
  7. 前端学习(2621):更新品牌
  8. 有4个节点可以构造出 二叉树_简单4个步骤就可以拍摄出美丽的城市夜景,赶紧试试吧...
  9. 流量管理系统产品选型常见问答(FAQ)
  10. PJzhang:经典子域名爆破工具subdomainsbrute
  11. 内容管理项目小结 成功案例-公司官网,游戏官网
  12. java服务器开发(一)
  13. 洛谷 P1911 L国的战斗之排兵布阵
  14. 测试属性4 –准确性
  15. 以太坊数字资产的发行和流通:以太坊上的数字资产定义、ERC 20代币合约标准、ERC 20标准接口、ERC 721代币合约标准、
  16. 《前端框架开发技术》HTML+CSS+JavaScript 制作个人简历简单个人主页
  17. Python入门(第一节):Python版本如何选和安装
  18. ora-00972标识符过长
  19. WinXP开机激活死循环
  20. 营收、净利双增,用友网络的“云转型”迎来了“龙抬头”?

热门文章

  1. WPF开发txt阅读器7:自定义文字和背景颜色
  2. Spark基本架构及原理
  3. 从追MM谈Java的23种设计模式
  4. 将一段话换一种方式的软件v.1.2.3
  5. 我们真的误解了人工智能?
  6. 2018性价比高的笔记本推荐
  7. 不用call和apply方法模拟实现ES5的bind方法
  8. 520条短信,对不起,我爱你
  9. 正向代理vs反向代理
  10. 从零开始用树莓派搭建服务器,拥有一个属于自己的网站