pytorch中矩阵拼接操作(torch.cat)

基本使用

# 拼接a,b,c的维度1
torch.cat([a,b,c],dim=1)

举例

#假设 abc均为3*2*2
a:tensor([[[1., 1.],
         [1., 1.]],
        [[1., 1.],
         [1., 1.]],
        [[1., 1.],
         [1., 1.]]])
b:tensor([[[0., 0.],
         [0., 0.]],
        [[0., 0.],
         [0., 0.]],
        [[0., 0.],
         [0., 0.]]])
c:tensor([[[2., 2.],
         [2., 2.]],
        [[2., 2.],
         [2., 2.]],
        [[2., 2.],
         [2., 2.]]])



print(torch.cat([a,b,c],dim=0)
#结果 :9*2*2
tensor([[[1., 1.],
         [1., 1.]],
        [[1., 1.],
         [1., 1.]],
        [[1., 1.],
         [1., 1.]],
        [[0., 0.],
         [0., 0.]],
        [[0., 0.],
         [0., 0.]],
        [[0., 0.],
         [0., 0.]],
        [[2., 2.],
         [2., 2.]],
        [[2., 2.],
         [2., 2.]],
        [[2., 2.],
         [2., 2.]]])
  
print(torch.cat([a,b,c],dim=1)     
 #结果 :3*6*2
 tensor([[[1., 1.],
         [1., 1.],
         [0., 0.],
         [0., 0.],
         [2., 2.],
         [2., 2.]],
        [[1., 1.],
         [1., 1.],
         [0., 0.],
         [0., 0.],
         [2., 2.],
         [2., 2.]],
        [[1., 1.],
         [1., 1.],
         [0., 0.],
         [0., 0.],
         [2., 2.],
         [2., 2.]]])
 
 print(torch.cat([a,b,c],dim=2)     
 #结果 :3*2*6
 tensor([[[1., 1., 0., 0., 2., 2.],
         [1., 1., 0., 0., 2., 2.]],
        [[1., 1., 0., 0., 2., 2.],
         [1., 1., 0., 0., 2., 2.]],
        [[1., 1., 0., 0., 2., 2.],
         [1., 1., 0., 0., 2., 2.]]])

应用

  • GoogLeNet中Inception结构将四个并行的branch结果的通道合并:
第一个维度为batch,第二个为channel,后面为宽和高
br1:Tensor:(64,64,28,28)
br2:Tensor:(64,128,28,28)
br3:Tensor:(64,32,28,28)
br4:Tensor:(64,32,28,28)
  • 将四个branch结果通道合并:(只需合并第一维度channel)
torch.cat([br1, br2, br3, br4], 1)
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值