官方文档

torch.norm是对输入的Tensor求范数

1.版本1--------------求张量范数

torch.norm(input, p=2) → float

参数:

  • input (Tensor) – 输入张量
  • p (float,optional) – 范数计算中的幂指数值

这是pytorch中的默认版本。输入为一个Tensor,输出是一个数。没啥多说的,直接上例子:

  1. import torch
  2. import torch.tensor as tensor
  3. a = torch.ones((2,3)) #建立tensor
  4. a2 = torch.norm(a) #默认求2范数
  5. a1 = torch.norm(a,p=1) #指定求1范数
  6. print(a)
  7. print(a2)
  8. print(a1)

2.版本2---------------------求指定维度上的范数

torch.norm(input, p, dim, out=None,keepdim=False) → Tensor

返回输入张量给定维dim 上每行的p 范数。

参数:

  • input (Tensor) – 输入张量
  • p (float) – 范数计算中的幂指数值
  • dim (int) – 缩减的维度
  • out (Tensor, optional) – 结果张量
  • keepdim(bool)– 保持输出的维度  (此参数官方文档中未给出,但是很常用)

其中p,input,output与版本1相同,不做赘述。我们重点看dim和keepdim两个参数。

先看dim

  1. import torch
  2. import torch.tensor as tensor
  3. a = tensor([[1, 2, 3, 4],
  4. [1, 2, 3, 4]]).float() #norm仅支持floatTensor,a是一个2*4的Tensor
  5. a0 = torch.norm(a,p=2,dim=0) #按0维度求2范数
  6. a1 = torch.norm(a,p=2,dim=1) #按1维度求2范数
  7. print(a0)
  8. print(a1)

可以看输出,dim=0是对0维度上的一个向量求范数,返回结果数量等于其列的个数,也就是说有多少个0维度的向量,将得到多少个范数。dim=1同理。

再看keepdim

其含义是保持输出的维度,挺抽象的,我们还是通过具体例子来看吧。

  1. a = torch.rand((2,3,4))
  2. at = torch.norm(a,p=2,dim=1,keepdim=True) #保持维度
  3. af = torch.norm(a,p=2,dim=1,keepdim=False) #不保持维度
  4. print(a.shape)
  5. print(at.shape)
  6. print(af.shape)

我们重点来看一下,输入tensor,keepdim=True和keepdim=False的形状。

可以发现,当keepdim=False时,输出比输入少一个维度(就是指定的dim求范数的维度)。而keepdim=True时,输出与输入维度相同,仅仅是输出在求范数的维度上元素个数变为1。这也是为什么有时我们把参数中的dim称为缩减的维度,因为norm运算之后,此维度或者消失或者元素个数变为1.

torch.norm的理解相关推荐

  1. torch.norm

    torch.norm 范数1,绝对值求和 范数2,平方和求开根号2 范数3,平方和求开根号3 import torch import torch.tensor as tensora = tensor( ...

  2. pytorch torch.norm(input, p=2) → float、torch.norm(input, p, dim, out=None) → Tensor(求范数)

    torch.norm 用法1: torch.norm(input, p=2) → float 返回输入张量input 的p 范数. 参数: input (Tensor) – 输入张量 p (float ...

  3. PyTorch中torch.norm函数详解

    torch.norm() 是 PyTorch 中的一个函数,用于计算输入张量沿指定维度的范数.具体而言,当给定一个输入张量 x 和一个整数 p 时,torch.norm(x, p) 将返回输入张量 x ...

  4. torch.norm()与F.normalize()的区别

    两者区别 F.normalize()在torch.norm()的基础上进行了标准化,即: F.normalize(x) = x / torch.norm(x) 代码示例 import torch im ...

  5. torch.nn.Embedding理解

    Pytorch官网的解释是:一个保存了固定字典和大小的简单查找表.这个模块常用来保存词嵌入和用下标检索它们.模块的输入是一个下标的列表,输出是对应的词嵌入. torch.nn.Embedding(nu ...

  6. 【Pytorch】torch.nn.Conv1d()理解与使用

    官方文档:https://pytorch.org/docs/stable/generated/torch.nn.Conv1d.html?highlight=nn%20conv1d#torch.nn.C ...

  7. torch norm() Formalize()

    torch中的normalize的功能是将一个向量单位化,比如一个向量为: x = [1,2,3,4] 则标准化过程为先求出这个向量的二范数,然后将每一个维度上面的值都除以这个二范数. import ...

  8. torch gather函数理解 图解

    看了好几篇了,没有直接看明白,特梳理之 功能 数据收集,函数torch.gather(input, dim, index, out=None) → Tensor 沿给定轴 dim ,将输入索引张量 i ...

  9. matlab norm如何理解,MATLAB 中NORM运用

    格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM   Matrix or vecto ...

  10. torch.nn.Embedding()理解

    https://blog.csdn.net/tommorrow12/article/details/80896331

最新文章

  1. mysql 5.5 编译参数_Mysql 5.5 编译参数
  2. Android提升篇系列:Android项目代码优化实践
  3. windows查看文件MD5值
  4. mysql高级查询 二_MySQL高级查询(二)
  5. Android5.0L因SystemUI ANR导致的黑屏问题分析
  6. vue 指令 v-once
  7. 树和二叉树2——输出广义表形式(带括号)二叉树
  8. JavaScript在一个数组中插入另一个数组
  9. Proteus8.9 下载与安装 以及大多数问题
  10. IOS开发之宏的深度学习
  11. PAT乙级练习题1028 人口普查
  12. 第五章 国内著名网络数据库系统
  13. Java Lempel-Ziv
  14. linux如何卸载lightdm,在Linux Deepin上安装Pantheon Lightdm主题
  15. NoSQL在腾讯的应用实践
  16. 鹰眼轨迹android,鹰眼轨迹服务
  17. 山东理工大学-2022级-程序设计基础I-实验9 字符串
  18. 历届试题 九宫重排 广度优先搜索+康拓排序
  19. html前世今生以及与css和js的关系
  20. CNN非接触掌纹识别改进过程(二)

热门文章

  1. 无线桥连后不能访问服务器,路由器设置无线桥接后不能登录副路由器怎么办?...
  2. 小型的 JavaScript 虚拟键盘
  3. Windows11 出现桌面管理器dwm.exe占用内存过高的解决方法
  4. vtk 中vtkMapper的各函数解析
  5. 《工业控制系统信息安全防护指南》产品措施匹配表
  6. 【踩坑】解决springboot注入yml配置文件 list报错
  7. floor关键字用法:
  8. 华为超级技术大牛的十年经验总结
  9. 在WIN系统中直接安装黑苹果系统
  10. 吴峰光杀进 Linux 内核