对一些reduce操作的理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

对一些reduce操作的理解


以torch.max为例

  • 当执行torch.max操作后,张量的维度会被降维

    a = torch.tensor([1,2,3,4])
    print(a.shape)
    max_a = torch.max(a, dim=-1)
    print(max_a)
    print(max_a[0].shape)
    print(max_a[1].shape)
    >>>
    # 大小为(4,)的张量通过torch.max操作后变为了标量
    torch.Size([4])
    torch.return_types.max(
    values=tensor(4),
    indices=tensor(3))
    torch.Size([])
    torch.Size([])
    
    b = torch.tensor([[1,2,3,4],[1,2,3,4]])
    print(b.shape)
    max_b = torch.max(b,dim=-1)
    print(max_b)
    print(max_b[0].shape)
    print(max_b[1].shape)
    >>>
    # 大小为(2,4)的张量通过torch.max操作后变为了维度为(2,)的张量
    torch.Size([2, 4])
    torch.return_types.max(
    values=tensor([4, 4]),
    indices=tensor([3, 3]))
    torch.Size([2])
    torch.Size([2])
    
    c = torch.tensor([[[1,2,3,4],[1,2,3,4]],[[1,2,3,4],[1,2,3,4]]])
    print(c)
    print(c.shape)
    max_c = torch.max(c,dim=-1)
    print(max_c)
    print(max_c[0].shape)
    print(max_c[1].shape)
    >>>
    # 大小为(2,2,4)的张量变为了(2,2)的张量
    tensor([[[1, 2, 3, 4],
             [1, 2, 3, 4]],
    
            [[1, 2, 3, 4],
             [1, 2, 3, 4]]])
    torch.Size([2, 2, 4])
    torch.return_types.max(
    values=tensor([[4, 4],
            [4, 4]]),
    indices=tensor([[3, 3],
            [3, 3]]))
    torch.Size([2, 2])
    torch.Size([2, 2])
    
  • 对于维度为(4,)的张量来说,取出其中的最大值即从总共为1行的4个数字中取一个最大值,因此最后结果只有一个数字,因此是一个标量;

  • 对于维度为(2,4)的张量来说,是从总共为2行的每行有4个数字中取一个最大值,因此最后每行有一个数字,将这两行的数字结果合并起来就是一个大小为(2,)的张量;

  • 同理,对于维度为(2,2,4)的张量来说,相当于有2个2行每行有4个数字的张量,从每个2行每行有4个数字的张量中取最大值,即和上一个维度为(2,4)的结果相同,得到大小为(2,)的张量,由于有2个2行每行有4个数字的张量,因此最终得到的大小为(2,2)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值