首页
读书
网课
《python》目录


正文

用法介绍

 pytorch中的torch.norm主要用于计算矩阵和向量的p pp范数,具体的用法如下所示:


torch.norm(input, p=‘fro’, dim=None, keepdim=False, out=None, dtype=None)


input (Tensor): 输入的张量,数据类型必须是浮点型或复杂输入。对于复杂输入,使用每个元素的绝对值计算范数。如果输入很复杂,并且未指定dtype或out,则结果的数据类型将是相应的浮点类型

p (int, float, inf, -inf, ‘fro’,‘nuc’, optional): 表示指定的范数,其中默认类型’fro’为Frobenius范数,'nuc’表示矩阵的核范数

dim (int, tuple of python:ints, list of python:ints, optional): 指定要计算范数的输入维度。如果dim为None,则将在输入的所有维度上计算范数。

keepdim (bool, optional): 输出的张量是否保持不变,默认值是False,如果dim = None和out = None,则该参数会被省略掉

out (Tensor, optional): 输出的张量,如果dim = None和out = None,则该参数会被省略掉

dtype (torch.dtype, optional): 返回的张量的所需数据类型。如果指定,则在执行操作时将输入张量转换为dtype。默认值是None

代码实例

 在图像中会用到torch.norm函数来计算图像中L 2范数。给定一批图像X ∈ R(b × c × w × h),则该图像的L 2范数的定义为:

1.png

相关的代码实例如下所示


import torch 


import torch 


def l2_norm(input, p_, dim_, keepdim_):

    norm = torch.norm(input, p=p_, dim=dim_, keepdim=keepdim_)

    return norm


if __name__ == '__main__':

input = torch.rand(4,3,32,32)

print(l2_norm(input, 2, None, False).shape)

input = torch.rand(4,3,32,32)

print(l2_norm(input, 2, 1, True).shape)


2.png

 

则有如下程序


import torch

inputs = torch.rand(5, 1, 28, 28)

outputs_L0_norm = torch.norm(inputs, p=0, dim=(2,3), keepdim=True)

outputs_L2_norm = torch.norm(inputs, p=2, dim=(2,3), keepdim=True)

outputs = outputs_L0_norm / outputs_L2_norm * torch.ones(inputs.shape)

print(outputs)


原文链接:https://blog.csdn.net/qq_38406029/article/details/119003719



上一篇: 没有了
下一篇: 没有了
圣贤书院