pytorch torch.nn.functional.normalize 应用

torch.nn.functional.normalize

torch.nn.functional.normalize(input, p=2, dim=1, eps=1e-12, out=None)

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

v=\frac{v}{\max(\lVert v \rVert_p, \epsilon)}

ps:文档地址

 

输入为一维Tensor

dim=0,可以看到每一个数字都除以了这个Tensor的范数:: \sqrt{1^2+2^2+3^2} = 3.7416

a = torch.Tensor([1,2,3])

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

tensor([0.2673, 0.5345, 0.8018])

 

 

输入为二维Tensor

dim=0,是对列操作。以第一列为例,整体除以了第一列的范数:\sqrt{1^2+4^2} = 4.1231

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,是对行操作。以第一行为例,整体除以了第一行的范数: \sqrt{1^2+2^2+3^2} = 3.7416

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,是对第三个维度,也就是每一行操作。以第一行为例,除以了第一行的范数: \sqrt{1^2+2^2+3^2} = 3.7416

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]]为例,此时要对它的列操作。第一列要除以这一列的范数:\sqrt{1^2+4^2} = 4.1231

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]]])

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

_yuki_

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值