Pytorch中torch.repeat_interleave()函数使用及说明

作者:cv_lhp 时间:2022-06-17 04:18:53 

torch.repeat_interleave()函数解析

1.函数说明

官网:torch.repeat_interleave(),函数说明如下图所示:

Pytorch中torch.repeat_interleave()函数使用及说明

2. 函数原型

torch.repeat_interleave(input, repeats, dim=None) → Tensor

3. 函数功能

沿着指定的维度重复张量的元素

4. 输入参数

1)input (类型:torch.Tensor):输入张量

2)repeats(类型:int或torch.Tensor):每个元素的重复次数

3)dim(类型:int)需要重复的维度。默认情况下dim=None,表示将把给定的输入张量展平(flatten)为向量,然后将每个元素重复repeats次,并返回重复后的张量。

5. 注意

1) 如果不指定dim,则默认将输入张量扁平化(维数是1,因此这时repeats必须是一个数,不能是数组),并且返回一个扁平化的输出数组。

2) 返回的数组与输入数组维数相同,并且除了给定的维度dim,其他维度大小与输入数组相应维度大小相同

3) repeats:如果传入数组,则必须是tensor格式。并且只能是一维数组,数组长度与输入数组input的dim维度大小相同

6. 代码例子

6.1 输入一维张量,不指定dim,重复次数为2次,表示将把给定的输入张量展平(flatten)为向量,然后将每个元素重复2次,并返回重复后的张量。

a = torch.randn(5)
a,torch.repeat_interleave(a,2)

输出结果如下所示:

(tensor([ 0.4030, -1.1536, -2.4513,  1.1454, -0.8818]),
 tensor([ 0.4030,  0.4030, -1.1536, -1.1536, -2.4513, -2.4513,  1.1454,  1.1454,
         -0.8818, -0.8818]))

6.2 输入二维张量,不指定dim,重复次数为2次,表示将把给定的输入张量展平(flatten)为向量,然后将每个元素重复2次,并返回重复后的张量。

a = torch.randn(3,2)
a,a.repeat_interleave(2)

输出结果如下:

(tensor([[-1.03, -0.32],
         [ 0.43,  0.78],
         [ 0.91, -0.11]]),
 tensor([-1.03, -1.03, -0.32, -0.32,  0.43,  0.43,  0.78,  0.78,  0.91,  0.91,
         -0.11, -0.11]))

6.3 输入二维张量,指定dim=0,重复次数为3次,表示把输入张量每行元素重复3次

a = torch.randn(3,2)
a,torch.repeat_interleave(a,3,dim=0)

输出结果如下:

(tensor([[ 0.14,  1.47],
         [-1.52, -0.62],
         [-0.24, -0.27]]),
 tensor([[ 0.14,  1.47],
         [ 0.14,  1.47],
         [ 0.14,  1.47],
         [-1.52, -0.62],
         [-1.52, -0.62],
         [-1.52, -0.62],
         [-0.24, -0.27],
         [-0.24, -0.27],
         [-0.24, -0.27]]))

6.4 输入二维张量,指定dim=1,重复次数为3次,表示把输入张量每列元素重复3次

a = torch.randn(3,2)
a,torch.repeat_interleave(a,3,dim=1)

输出结果如下:

(tensor([[-0.81,  0.56],
         [-2.41, -0.56],
         [ 0.38, -0.90]]),
 tensor([[-0.81, -0.81, -0.81,  0.56,  0.56,  0.56],
         [-2.41, -2.41, -2.41, -0.56, -0.56, -0.56],
         [ 0.38,  0.38,  0.38, -0.90, -0.90, -0.90]]))

6.5 输入二维张量,指定dim=0,重复次数为一个张量列表[n1,n2,n3],表示在(dim=0)对应行上面重复n1,n2,n3遍,张量列表的长度必须与dim=0的维度的长度一样,否则会报错

a = torch.randn(3,2)
a,torch.repeat_interleave(a,torch.tensor([2,3,4]),dim=0)#表示第一行重复2遍,第二行重复3遍,第三行重复4遍

输出结果如下:

(tensor([[-0.79,  0.54],
         [-0.47, -0.25],
         [-0.13,  1.03]]),
 tensor([[-0.79,  0.54],
         [-0.79,  0.54],
         [-0.47, -0.25],
         [-0.47, -0.25],
         [-0.47, -0.25],
         [-0.13,  1.03],
         [-0.13,  1.03],
         [-0.13,  1.03],
         [-0.13,  1.03]]))

7. 与torch.repeat()函数区别

两个函数方法最大的区别就是repeat_interleave是一个元素一个元素地重复,而repeat是一组元素一组元素地重复.

来源:https://blog.csdn.net/flyingluohaipeng/article/details/125039411

标签:Pytorch,torch.repeat,interleave
0
投稿

猜你喜欢

  • pycharm 如何跳出服务器证书不受信任的提示

    2022-01-15 16:38:46
  • Python实现发送QQ邮件的封装

    2022-10-08 21:19:56
  • Elasticsearches通过坐标位置实现对附近人的搜索

    2023-05-23 16:16:12
  • JS Object.preventExtensions(),Object.seal()与Object.freeze()用法实例分析

    2023-09-04 22:44:33
  • python Requsets下载开源网站的代码(带索引 数据)

    2023-01-03 13:19:11
  • python实现Simhash算法

    2022-06-29 06:21:05
  • python文本进度条实例

    2023-05-15 17:18:16
  • 不同情况下修复Access数据库的实用方法

    2008-11-28 16:18:00
  • python开发之Docker入门安装部署教程

    2022-12-08 18:31:28
  • PyCharm 2020.2.2 x64 下载并安装的详细教程

    2023-11-29 13:36:32
  • python-docx 页面设置详解

    2021-12-06 03:42:02
  • asp中的rs.open于conn.execute的区别

    2009-10-29 12:12:00
  • Django REST 异常处理详解

    2023-06-19 02:40:34
  • 怎样开启phpStudy服务器

    2023-05-25 00:38:06
  • python常用时间库time、datetime与时间格式之间的转换教程

    2023-05-03 01:24:37
  • GO语言映射(Map)用法分析

    2024-04-28 09:17:53
  • 基于mssql导mysql遇到的问题

    2024-01-22 05:37:36
  • Python Pandas数据处理高频操作详解

    2021-05-21 22:29:00
  • Flask使用SocketIO实现WebSocket与Vue进行实时推送

    2023-02-19 05:05:45
  • 网页设计:把导航系统做薄

    2007-12-28 12:02:00
  • asp之家 网络编程 m.aspxhome.com