【PyTorch】torch.cat()

输入参数: 

  • tensors:张量序列,它可是两个张量组成的tuple(A,B),也可以是两个张量组成的list [A,B],也可以是一个张量组成的元组/列表。无论是什么样的,它一定要是一个可以迭代的对象【见下面的例子】
  • dim:拼接张量序列的维度

使用方法:

torch.cat是将两个张量(tensor)拼接在一起,cat 是 concatenate 的意思,即拼接。cat 以后的张量会在拼接维度增加为两个张量维度的加和

使用torch.cat((A,B),dim)时,除拼接维数dim数值可不同外其余维数数值需相同,方能对齐。

2. 例子理解

>>> import torch
>>> A=torch.ones(2,3) #2x3的张量(矩阵)                                     
>>> A
tensor([[ 1.,  1.,  1.],
        [ 1.,  1.,  1.]])


>>> B=2*torch.ones(4,3)#4x3的张量(矩阵)                                    
>>> B
tensor([[ 2.,  2.,  2.],
        [ 2.,  2.,  2.],
        [ 2.,  2.,  2.],
        [ 2.,  2.,  2.]])


>>> C=torch.cat((A,B),0)#按维数0(行)拼接
>>> C
tensor([[ 1.,  1.,  1.],
         [ 1.,  1.,  1.],
         [ 2.,  2.,  2.],
         [ 2.,  2.,  2.],
         [ 2.,  2.,  2.],
         [ 2.,  2.,  2.]])
>>> C.size()
torch.Size([6, 3])

上面给出了两个张量A和B,分别是2行3列,4行3列。即他们都是2维张量。因为只有两维,这样在用torch.cat拼接的时候就有两种拼接方式:按行拼接和按列拼接。即所谓的维数0和维数1. 

C=torch.cat((A,B),0)就表示按维数0(行)拼接A和B,也就是竖着拼接A上B下。此时需要注意:列数必须一致,即维数1数值要相同,这里都是3列,方能列对齐。拼接后的C的第0维是两个维数0数值和,即2+4=6.

C=torch.cat((A,B),1)就表示按维数1(列)拼接A和B,也就是横着拼接A左B右。此时需要注意:行数必须一致,即维数0数值要相同,这里都是2行,方能行对齐。拼接后的C的第1维是两个维数1数值和,即3+4=7.

例子:

cat操作可以只对一个元素进行操作,前提是这个元素是一个可迭代对象。直接对一个张量的某个维度进行cat,是错误的

import torch


A=torch.ones(2,3,4)
B=torch.ones(2,3,4)

# 1、是一个含有多个张量可迭代的list[A,B]
# (4,3,4)
list_AB = []
list_AB.append(A)
list_AB.append(B)
print(torch.cat(list_AB).size())


# 2、是一个含有多个张量可迭代的tuple(A,B)
# (4,3,4)
print(torch.cat((A,B)).size())


# 3、是一个可迭代的只有一个张量的list[A,]
# (2,3,4)
list_A = []
list_A.append(A)
print(torch.cat(list_A,0).size())
print(torch.cat(list_A,1).size())
print(torch.cat(list_A,2).size())


# 4、但是只有一个张量是不可以的,因为它不是一个可迭代的对象
print(torch.cat(A))


PyTorch的torch.cat_my-GRIT的博客-CSDN博客_torch.cat

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pengsen Ma

太谢谢了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值