contiguous:连续的,邻近的

调用contiguous时,会强制拷贝一份tensor,但两个tensor完全没有联系。则断开两个变量之间的依赖,也就是所谓的深拷贝。

x = torch.randn(3, 2)
y = torch.transpose(x, 0, 1).contiguous()
print('修改前:')
print('x-', x)
print('y-', y)
print('\n修改后:')
y[0, 0] = 11
print('x-', x)
print('y-', y)输出:
修改前:
x- tensor([[-0.5822,  0.5781],[ 1.4893,  1.2434],[-2.1330,  0.2530]])
y- tensor([[-0.5822,  0.5781],[ 1.4893,  1.2434],[-2.1330,  0.2530]])修改后:
x- tensor([[11.0000,  0.5781],[ 1.4893,  1.2434],[-2.1330,  0.2530]])
y- tensor([[11.0000,  0.5781],[ 1.4893,  1.2434],[-2.1330,  0.2530]])

即对y使用了.contiguous()后,改变y的值,x没有任何影响。

如果不使用.contiguous(),则

import torchx = torch.randn(3, 2)
# y = torch.transpose(x, 0, 1).contiguous()
z= torch.transpose(x, 0, 1)
print('修改前:')
print('x-', x)
print('z-',z)
print('\n修改后:')
z[0, 0] = 11
print('x-', x)
print('y-', z)输出:
修改前:
x- tensor([[-1.5120,  0.9070],[ 1.1465,  1.4240],[ 0.5535,  0.1564]])
z- tensor([[-1.5120,  1.1465,  0.5535],[ 0.9070,  1.4240,  0.1564]])修改后:
x- tensor([[11.0000,  0.9070],[ 1.1465,  1.4240],[ 0.5535,  0.1564]])
y- tensor([[11.0000,  1.1465,  0.5535],[ 0.9070,  1.4240,  0.1564]])

当遇到需要调用contiguous()时,运行会提醒。

RuntimeError: input is not contiguous

#在pytorch中,只有很少几个操作是不改变tensor的内容本身,只是重新定义下表与元素对应关系的,即不进行数据拷贝和数据改变,变得是元数据。

改变元数据的操作:

narrow()

view()

expand()

transpose()

在使用transpose()进行转置操作时,pytorch不会创建新的、转置后的tensor,而是修改了tensor中的一些属性,也就是元数据

pytorch:contiguous()相关推荐

  1. pytorch 中 contiguous() 函数理解

    pytorch 中 contiguous() 函数理解 文章目录 pytorch 中 contiguous() 函数理解 引言 使用 contiguous() 后记 文章抄自 Pytorch中cont ...

  2. Pytorch:Transformer(Encoder编码器-Decoder解码器、多头注意力机制、多头自注意力机制、掩码张量、前馈全连接层、规范化层、子层连接结构、pyitcast) part1

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) Encoder编码器-Decoder解码器框架 + Atten ...

  3. pytorch与keras_Keras vs PyTorch:如何通过迁移学习区分外星人与掠食者

    pytorch与keras by Patryk Miziuła 通过PatrykMiziuła Keras vs PyTorch:如何通过迁移学习区分外星人与掠食者 (Keras vs PyTorch ...

  4. Keras vs PyTorch:谁是第一深度学习框架?

    「第一个深度学习框架该怎么选」对于初学者而言一直是个头疼的问题.本文中,来自 deepsense.ai 的研究员给出了他们在高级框架上的答案.在 Keras 与 PyTorch 的对比中,作者还给出了 ...

  5. Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配、对应版本安装之详细攻略

    Pytorch:深度学习中pytorch/torchvision版本和CUDA版本最正确版本匹配.对应版本安装之详细攻略 目录 深度学习中pytorch/torchvision版本和CUDA版本最正确 ...

  6. PyTorch:采用sklearn 工具生成这样的合成数据集+利用PyTorch实现简单合成数据集上的线性回归进行数据分析

    PyTorch:采用sklearn 工具生成这样的合成数据集+利用PyTorch实现简单合成数据集上的线性回归进行数据分析 目录 输出结果 核心代码 输出结果 核心代码 #PyTorch:采用skle ...

  7. DL框架之PyTorch:深度学习框架PyTorch的简介、安装、使用方法之详细攻略

    DL框架之PyTorch:PyTorch的简介.安装.使用方法之详细攻略 DL框架之PyTorch:深度学习框架PyTorch的简介.安装.使用方法之详细攻略 目录 PyTorch的简介 1.pyto ...

  8. Pytorch:NLP 迁移学习、NLP中的标准数据集、NLP中的常用预训练模型、加载和使用预训练模型、huggingface的transfomers微调脚本文件

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) run_glue.py微调脚本代码 python命令执行run ...

  9. Pytorch:RNN、LSTM、GRU 构建人名分类器(one-hot版本、Embedding嵌入层版本)

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 2. RNN经典案例 2.1 使用RNN模型构建人名分类器 学 ...

最新文章

  1. Spring Cloud Data Flow 中的 ETL
  2. 计组之存储系统:3、主存与CPU的链接(字扩展、位扩展、字位扩展、74LS138)
  3. vue中el-row使用
  4. [BZOJ] 3301: [USACO2011 Feb] Cow Line
  5. 【Hadoop】Hadoop生态圈基本组件介绍
  6. Takeown 实现解析
  7. 前序遍历、中序遍历和后续遍历
  8. c语言蜂鸣器放音乐程序,蜂鸣器音乐程序设定C语言.doc
  9. Javassist简介
  10. oracle自增序列
  11. 三星s10刷linux,三星S10/S10+刷入TWRP_Recovery最新版教程
  12. win10家庭版调出组策略_正版Win10免费送!支持无限次数重装
  13. web测试-WEB常用测试用例集
  14. 抗癌药物之多肽药物偶联物技术(PDC)介绍
  15. 漏洞复现----11、GlassFish任意文件读取
  16. 二次冲击港交所,手握宝可梦、游戏王的云涌控股困于IP依赖
  17. mysql5.7.17.zip教程,Mysql学习win10下mysql 5.7.17 zip压缩包版安装教程
  18. Oracle导入dmp文件闪退处理方案
  19. PHP系列之集成Ajax实现登录验证
  20. 函数、原生JS的事件相关(上)

热门文章

  1. MybatisPlus使用Wrapper实现增删改查功能
  2. 二元复合函数求二阶偏导
  3. 在Vue.js中加载字体的最佳做法
  4. 技术开发合同免税政策
  5. java名言英文_十句与咖啡有关的人生格言,中英文双版本
  6. 大智慧c语言编程,[转载]大智慧分析家?c语言?编程接口
  7. 2017研究生乒乓球比赛记录
  8. Java多线程并发笔记03 synchronized减小锁粒度,优化代码执行时间
  9. 女王的教室--经典语录
  10. Day 5 Soot使用笔记