pytorch.repeat()函数解惑

本文详细探讨PyTorch中的repeat()函数,从一维矩阵到四维矩阵的复制操作。通过实例分析,解释了复制过程中如何根据参数在不同维度上扩展数据,以及当复制维度超过原始矩阵维度时的行为。
摘要由CSDN通过智能技术生成

1. 一维矩阵的复制操作:

注意这里的每个例子都是环环相扣的,最好不要跳跃查看

1.1 一维复制

    x = torch.tensor([0, 4, 8])
    y = torch.tensor([0, 4, 8, 12])
    x1 = x.repeat(len(y))
    print(x1)
    print(x1.size())

输出:

tensor([0, 4, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8])
torch.Size([12])

可以看出,当x是一维的时候,他是在列方向上进行了复制。

1.2 二维复制

x2 = x.repeat(2, len(y)) #(2,4)
print(x2)
print(x2.size())

输出:

tensor([[0, 4, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8],
        [0, 4, 8, 0, 4, 8, 0, 4, 8, 0, 4, 8]])
torch.Size([2, 12])

可以看出二维复制,就是普通的行列复制,第一个参数为行,第二个参数为列

1.3 三维复制

x3 = x.repeat(2, len(y),1) #(2,4,1)
print(x3)
print(x3.size())

输出:

tensor([[[0, 4, 8],
         [0, 4, 8],
         [0, 4, 8],
         [0, 4, 8]],

		[[0, 4, 8],
   	 	[0, 4, 8],
   	 	[0, 4, 8],
     	[0, 4, 8]]])

torch.Size([2, 4, 3])

可以看出三维复制是从最后一个数字开始的,先是1,原数据不变,还是[0,4,8],也就是维度不变;然后是4,在行方向开始复制,复制了4行变成了[[0, 4, 8], [0, 4, 8], [0, 4, 8], [0, 4, 8]],即形状变成了[2,4];最后是2,在最前面添加一个维度,变成了[2,4,3]就是我们的输出结果。

我们进一步再看下下面的例子,将最后一个重复数字由1变

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值