【Pytorch】张量复制方法repeat、repeat_interleave和tile
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相关推荐
- 一文读懂PyTorch张量基础(附代码)
作者:Matthew Mayo, KDnuggets 翻译:和中华 校对:丁楠雅 本文约1000字,建议阅读5分钟. 本文介绍了PyTorch Tensor最基础的知识以及如何跟Numpy的ndarr ...
- numpy 辨异(四)—— np.repeat 与 np.tile
>> import numpy as np >> help(np.repeat) >> help(np.tile) 二者执行的是均是复制操作: np.repeat: ...
- pytorch张量_PyTorch张量-详细概述
pytorch张量 In this PyTorch tutorial, we'll discuss PyTorch Tensor, which are the building blocks of t ...
- torch.repeat()与numpy.repeat()和 numpy.tile()比较
torch和numpy的repeat比较 总结: (1)np.repeat() 用来重复数组元素,重复的元素放在原元素的临近位置. (2)torch.repeat()和np.tile()函数类似,是将 ...
- pytorch张量复制clone()和detach()
1. pytorch张量复制clone()和detach() https://blog.csdn.net/Answer3664/article/details/104417013 2. [Pytorc ...
- Pytorch中的repeat以及repeat_interleave用法
repeat和repeat_interleave都是pytorch中用来复制的两种方法,但是二者略有不同,如下所示. 1.repeat torch.tensor().repeat()里面假设里面有3个 ...
- Pytorch张量tensor的使用
1. 张量Tensor Tensors张量: 张量的概念类似于Numpy中的ndarray数据结构, 最大的区别在于Tensor可以利用GPU的加速功能. 张量是一个统称,其中包含很多类型: [各 ...
- pytorch图像和张量的相互转换_Day107:Pytorch张量类型的构建与相互转换
张量的作用 Pytorch的数据类型为各式各样的Tensor,Tensor可以理解为高维矩阵(与Numpy中的Array类似) 通过使用Type函数可以查看变量类型.一 CPU张量类型 Pytorch ...
- pytorch张量操作基础
张量是pytorch的基本数据类型,因此有必要重新快速的学习下怎么使用操作张量. 1:使用tensor直接创建 b = torch.tensor([[11, 22, 33, 66], [77, 44, ...
最新文章
- 关闭、刷新、跳转、离开当前网页前提示
- docx文件上传java_java上传文件通过mybatis存储到数据库的blob格式中.docx
- form左上角有个锁的符号_第三章 表单笔记
- 右键菜单添加程序,指定图标, Notepad2、Sublime Text 2
- html 入门例子(一)
- 在参加比赛之后一定要注意的事情
- Feign,Apache Http Client,OkHttp的区别
- centos查看网关地址
- 【更新至2.0】cnbeta 根据评论数提取热喷新闻的js脚本
- java -UDP通信
- 【Spark篇】---Spark调优之代码调优,数据本地化调优,内存调优,SparkShuffle调优,Executor的堆外内存调优...
- HTML和CSS面试题第35题
- 计算机缩写术语完全介绍
- weblogic10.3.6安装漏洞补丁
- PCB设计中的3W原则
- group by 如何自定义规则分组,合并分组
- JQuery测手速小游戏-遁地龙卷风
- Linux -- SELinux配置及应用(1)
- 朋友圈一杠中间一个点_开启朋友圈3天可见,你不知道的秘密
- 爬虫项目——Scrapy爬取Boss直聘