import torch

一、repeat

以整个tensor作为基础元素进行复制操作。

1. 示例1:向量复制

x = torch.LongTensor(range(0,3))
print(x)
tensor([0, 1, 2])
print(x.repeat(2))
tensor([0, 1, 2, 0, 1, 2])
print(x.repeat(2,3)) # 0维上复制成2倍,1维上复制成3倍
tensor([[0, 1, 2, 0, 1, 2, 0, 1, 2],[0, 1, 2, 0, 1, 2, 0, 1, 2]])
print(x.repeat(2,3,2)) # 0维上复制成2倍,1维上复制成3倍,2维上也复制成2倍
tensor([[[0, 1, 2, 0, 1, 2],[0, 1, 2, 0, 1, 2],[0, 1, 2, 0, 1, 2]],[[0, 1, 2, 0, 1, 2],[0, 1, 2, 0, 1, 2],[0, 1, 2, 0, 1, 2]]])

2. 示例2:矩阵复制

x = torch.LongTensor(range(0,6)).reshape(2,3)
print(x)
# print(x.repeat(2)) # 会报错,因为x是2维的矩阵
tensor([[0, 1, 2],[3, 4, 5]])
print(x.repeat(1,2)) # 0维复制成1倍,1维复制成2倍
tensor([[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5]])
print(x.repeat(2,2)) # 0维复制成2倍,1维复制成2倍
tensor([[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5],[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5]])

二、repeat_interleave

以tensor中的元素作为基础进行复制操作

1. 示例1:向量复制

x = torch.LongTensor(range(0,3))
print(x)
tensor([0, 1, 2])
print(x.repeat_interleave(2))
# print(x.repeat_interleave(2,3)) # 会报错
tensor([0, 0, 1, 1, 2, 2])

2. 示例2:矩阵复制

x = torch.LongTensor(range(0,6)).reshape(2,3)
print(x)
tensor([[0, 1, 2],[3, 4, 5]])
print(x.repeat_interleave(2)) # 将矩阵拉平后再复制
tensor([0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5])
print(x.repeat_interleave(2, dim=0)) # 在0维上复制成2倍
tensor([[0, 1, 2],[0, 1, 2],[3, 4, 5],[3, 4, 5]])
print(x.repeat_interleave(2, dim=1)) # 在1维上复制成2倍
tensor([[0, 0, 1, 1, 2, 2],[3, 3, 4, 4, 5, 5]])
print(x.repeat_interleave(torch.tensor([1,2]), dim=0)) # 第0行元素不复制,第2行元素复制成2倍
tensor([[0, 1, 2],[3, 4, 5],[3, 4, 5]])
print(x.repeat_interleave(torch.tensor([3,2,1]), dim=1)) # 第0列元素复制成3倍,第1列元素复制成2倍,第2列元素不复制
tensor([[0, 0, 0, 1, 1, 2],[3, 3, 3, 4, 4, 5]])

三、tile

大多数场景中与repeat相同,但是能够处理复制维度参数小于输入维度的情况

x = torch.LongTensor(range(0,6)).reshape(2,3)
print(x)
tensor([[0, 1, 2],[3, 4, 5]])
print(x.tile(2)) # 与repeat不同,tile不会报错,而是将其转换为x.tile(1,2)
tensor([[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5]])
print(x.tile(1,2)) # 0维复制成1倍,1维复制成2倍
tensor([[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5]])
print(x.tile(2,2)) # 0维复制成2倍,1维复制成2倍
tensor([[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5],[0, 1, 2, 0, 1, 2],[3, 4, 5, 3, 4, 5]])

【Pytorch】张量复制方法repeat、repeat_interleave和tile相关推荐

  1. 一文读懂PyTorch张量基础(附代码)

    作者:Matthew Mayo, KDnuggets 翻译:和中华 校对:丁楠雅 本文约1000字,建议阅读5分钟. 本文介绍了PyTorch Tensor最基础的知识以及如何跟Numpy的ndarr ...

  2. numpy 辨异(四)—— np.repeat 与 np.tile

    >> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...

  3. pytorch张量_PyTorch张量-详细概述

    pytorch张量 In this PyTorch tutorial, we'll discuss PyTorch Tensor, which are the building blocks of t ...

  4. torch.repeat()与numpy.repeat()和 numpy.tile()比较

    torch和numpy的repeat比较 总结: (1)np.repeat() 用来重复数组元素,重复的元素放在原元素的临近位置. (2)torch.repeat()和np.tile()函数类似,是将 ...

  5. pytorch张量复制clone()和detach()

    1. pytorch张量复制clone()和detach() https://blog.csdn.net/Answer3664/article/details/104417013 2. [Pytorc ...

  6. Pytorch中的repeat以及repeat_interleave用法

    repeat和repeat_interleave都是pytorch中用来复制的两种方法,但是二者略有不同,如下所示. 1.repeat torch.tensor().repeat()里面假设里面有3个 ...

  7. Pytorch张量tensor的使用

    1. 张量Tensor Tensors张量: 张量的概念类似于Numpy中的ndarray数据结构, 最大的区别在于Tensor可以利用GPU的加速功能. 张量是一个统称,其中包含很多类型:   [各 ...

  8. pytorch图像和张量的相互转换_Day107:Pytorch张量类型的构建与相互转换

    张量的作用 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵(与Numpy中的Array类似) 通过使用Type函数可以查看变量类型.一 CPU张量类型 Pytorch ...

  9. pytorch张量操作基础

    张量是pytorch的基本数据类型,因此有必要重新快速的学习下怎么使用操作张量. 1:使用tensor直接创建 b = torch.tensor([[11, 22, 33, 66], [77, 44, ...

最新文章

  1. 关闭、刷新、跳转、离开当前网页前提示
  2. docx文件上传java_java上传文件通过mybatis存储到数据库的blob格式中.docx
  3. form左上角有个锁的符号_第三章 表单笔记
  4. 右键菜单添加程序,指定图标, Notepad2、Sublime Text 2
  5. html 入门例子(一)
  6. 在参加比赛之后一定要注意的事情
  7. Feign,Apache Http Client,OkHttp的区别
  8. centos查看网关地址
  9. 【更新至2.0】cnbeta 根据评论数提取热喷新闻的js脚本
  10. java -UDP通信
  11. 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优...
  12. HTML和CSS面试题第35题
  13. 计算机缩写术语完全介绍
  14. weblogic10.3.6安装漏洞补丁
  15. PCB设计中的3W原则
  16. group by 如何自定义规则分组,合并分组
  17. JQuery测手速小游戏-遁地龙卷风
  18. Linux -- SELinux配置及应用(1)
  19. 朋友圈一杠中间一个点_开启朋友圈3天可见,你不知道的秘密
  20. 爬虫项目——Scrapy爬取Boss直聘

热门文章

  1. 一个人生活,如何摆脱孤独提升幸福感?
  2. 游戏防封技术是学易语言还是学c,易语言写游戏脚本防封执行sqlplus 之后没执行...
  3. Python——定义全局变量
  4. 5G网络优化.PPT
  5. 计算机网络的 89 个核心概念
  6. 设计不会崩溃的健康码系统
  7. HDU - 2520 我是菜鸟,我怕谁
  8. 神经网络历史_神经网络完整有趣且令人费解的历史
  9. apache中的php模块安装
  10. 聋人大学生终于开通了CNSD博客,CNSD在这里记录自己成长