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
投稿

猜你喜欢

  • 浅析Go汇编语法和MatrixOne使用介绍

    2023-07-13 19:38:18
  • 让你一文弄懂Pandas文本数据处理

    2023-07-17 19:12:08
  • Python基础之模块详解

    2023-02-24 23:23:52
  • 教程:MySQL中多表操作和批处理方法

    2009-07-30 08:20:00
  • Python脚本实现Zabbix多行日志监控过程解析

    2021-12-27 09:40:47
  • Windows和夜神模拟器上抓包程序mitmproxy的安装使用详解

    2023-11-15 12:29:21
  • Python ftp上传文件

    2023-10-01 06:35:34
  • go日志库中的logrus

    2023-07-21 13:48:02
  • PHP+redis实现添加处理投票的方法

    2023-11-22 04:38:19
  • 深入理解pytorch库的dockerfile

    2021-01-11 23:28:54
  • 基于Python实现简单的定时器详解

    2021-04-12 01:21:28
  • 关于python的编码与解码decode()方法及zip()函数

    2022-04-04 15:15:54
  • asp sql数据验证之特殊字符处理

    2008-02-24 16:35:00
  • 使用Python开发游戏运行脚本成功调用大漠插件

    2021-03-09 21:05:53
  • 连接无法用于执行此操作。在此上下文中它可能已被关闭或无效

    2011-03-15 23:03:00
  • 将 html 转成 ubb代码的小脚本

    2013-06-25 07:07:00
  • 轻松掌握SQL Server存储过程的命名标准

    2009-01-15 13:14:00
  • PyQT实现菜单中的复制,全选和清空的功能的方法

    2023-08-13 03:09:23
  • kafka-python批量发送数据的实例

    2023-04-24 04:40:23
  • Python Pandas 如何shuffle(打乱)数据

    2023-04-22 23:17:16
  • asp之家 网络编程 m.aspxhome.com