Pytorch----torch.nn.functional

torch.nn.functional.normalize:

  • 功能:将某一个维度除以那个维度对应的范数(默认是2范数)。
  • 公式:

积累技巧:dim到底是第几维:

  • Tensor的形式:
tensor([[[0.2425, 0.3714, 0.4472],
         [0.9701, 0.9285, 0.8944]],

        [[0.2425, 0.3714, 0.4472],
         [0.9701, 0.9285, 0.8944]]])
  • dim=2: 碰到的第三个括号 :行
  • dim=1: 碰到的第二个括号:列
  • dim=0: 碰到的第一个括号:不知如何表述

一维:输入为一维Tensor

  • 可以看到每一个数字都除以了这个Tensor的范数:
a = torch.Tensor([1,2,3])

torch.nn.functional.normalize(a, dim=0)

tensor([0.2673, 0.5345, 0.8018])

二维:输入为二维Tensor

  • 因为dim=0,所以是对列操作。以第一列为例,整体除以了第一列的范数:
b = torch.Tensor([[1,2,3], [4,5,6]])

torch.nn.functional.normalize(b, dim=0)

tensor([[0.2425, 0.3714, 0.4472],
        [0.9701, 0.9285, 0.8944]])
  • 因为dim=1,所以是对行操作。以第一行为例,整体除以了第一行的范数:
b = torch.Tensor([[1,2,3], [4,5,6]])

torch.nn.functional.normalize(b, dim=1)

tensor([[0.2673, 0.5345, 0.8018],
        [0.4558, 0.5698, 0.6838]])

三维:输入为三维Tensor

  • 注意此时dim=2,所以是对第三个维度,也就是每一行操作。以第一行为例,除以了第一行的范数:
b = torch.Tensor([[[1,2,3], [4,5,6]], [[1,2,3], [4,5,6]]])

torch.nn.functional.normalize(b, dim=2)

tensor([[[0.2673, 0.5345, 0.8018],
         [0.4558, 0.5698, 0.6838]],

        [[0.2673, 0.5345, 0.8018],
         [0.4558, 0.5698, 0.6838]]])
  • 注意此时dim=1,所以是对第二个维度操作。第二个维度是二维数组,所以此时相当于对二维数组的第0维操作。
    [[1,2,3], [4,5,6]]为例,此时要对它的列操作。第一列要除以这一列的范数:
b = torch.Tensor([[[1,2,3], [4,5,6]], [[1,2,3], [4,5,6]]])

torch.nn.functional.normalize(b, dim=1)

tensor([[[0.2425, 0.3714, 0.4472],
         [0.9701, 0.9285, 0.8944]],

        [[0.2425, 0.3714, 0.4472],
         [0.9701, 0.9285, 0.8944]]])

参考博文:https://blog.csdn.net/ECNU_LZJ/article/details/103653133

猜你喜欢

转载自blog.csdn.net/weiwei935707936/article/details/109543119