torch.nn.functional.normalize详解

torch.nn.functional.normalize

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

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

主要讲以下三种情况:

输入为一维Tensor
a = torch.Tensor([1,2,3])
torch.nn.functional.normalize(a, dim=0)
tensor([0.2673, 0.5345, 0.8018])

可以看到每一个数字都除以了这个Tensor的范数:

输入为二维Tensor
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=0,所以是对列操作。以第一列为例,整体除以了第一列的范数:1 2 + 4 2 = 4.1231

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

因为dim=1,所以是对行操作。以第一行为例,整体除以了第一行的范数:

输入为三维Tensor
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=2,所以是对第三个维度,也就是每一行操作。以第一行为例,除以了第一行的范数:

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

注意此时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=0)
tensor([[[0.7071, 0.7071, 0.7071],
         [0.7071, 0.7071, 0.7071]],
        [[0.7071, 0.7071, 0.7071],
         [0.7071, 0.7071, 0.7071]]])
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
torch.nn.functional是PyTorch中的一个模块,用于实现各种神经网络的函数,包括卷积、池化、激活、损失函数等。该模块中的函数是基于Tensor进行操作的,可以灵活地组合使用。 常用函数: 1.卷积函数:torch.nn.functional.conv2d 该函数用于进行二维卷积操作,输入包括输入张量、卷积核张量和卷积核大小等参数。示例代码如下: ```python import torch.nn.functional as F input = torch.randn(1, 1, 28, 28) conv1 = nn.Conv2d(1, 6, 5) output = F.conv2d(input, conv1.weight, conv1.bias, stride=1, padding=2) ``` 2.池化函数:torch.nn.functional.max_pool2d 该函数用于进行二维最大池化操作,输入包括输入张量、池化核大小等参数。示例代码如下: ```python import torch.nn.functional as F input = torch.randn(1, 1, 28, 28) output = F.max_pool2d(input, kernel_size=2, stride=2) ``` 3.激活函数:torch.nn.functional.relu 该函数用于进行ReLU激活操作,输入包括输入张量等参数。示例代码如下: ```python import torch.nn.functional as F input = torch.randn(1, 10) output = F.relu(input) ``` 4.损失函数:torch.nn.functional.cross_entropy 该函数用于计算交叉熵损失,输入包括预测结果和真实标签等参数。示例代码如下: ```python import torch.nn.functional as F input = torch.randn(3, 5) target = torch.tensor([1, 0, 4]) output = F.cross_entropy(input, target) ``` 以上是torch.nn.functional模块中的一些常用函数,除此之外还有很多其他函数,可以根据需要进行查阅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Cretheego

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

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

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

打赏作者

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

抵扣说明:

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

余额充值