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

返回所给tensor的矩阵范数或向量范数

参数:

  • input:输入tensor
  • p (int, float, inf, -inf, 'fro', 'nuc', optional):范数计算中的幂指数值。默认为'fro'

  • dim (int,2-tuple,2-list, optional): 指定计算的维度。如果是一个整数值,向量范数将被计算;如果是一个大小为2的元组,矩阵范数将被计算;如果为None,当输入tensor只有两维时矩阵计算矩阵范数;当输入只有一维时则计算向量范数。如果输入tensor超过2维,向量范数将被应用在最后一维
  • keepdim(bool,optional):指明输出tensor的维度dim是否保留。如果dim=None或out=None,则忽略该参数。默认值为False,不保留
  • out(Tensor, optional):tensor的输出。如果dim=None或out=None,则忽略该参数。
  • dtype(torch.dtype,optional):指定返回tensor的期望数据类型。如果指定了该参数,在执行该操作时输入tensor将被转换成 :attr:’dtype’

可见2范数求的就是距离

 举例说明:

>>> import torch
>>> a = torch.arange(, dtype=torch.float) -
>>> a
tensor([-., -., -., -., ., ., ., ., .])
>>> b = a.reshape(,)
>>> b
tensor([[-., -., -.],
[-., ., .],
[ ., ., .]])
>>> torch.norm(a)
tensor(7.7460)
>>> torch.norm(b)
tensor(7.7460) >>> torch.norm(a, float('inf'))
tensor(.)
>>> torch.norm(b, float('inf'))
tensor(.)

1)如果不指明p,则是计算Frobenius范数:

所以上面的例子中a,b的结果都相同7.7460 = √(16*2 + 9*2 +4*2 + 1*2)

2)p = 'inf',则是求出矩阵或向量中各项元素绝对值中的最大值,所以为4

>>> c = torch.tensor([[,,],[-,,]], dtype=torch.float)
>>> c
tensor([[ ., ., .],
[-., ., .]])
>>> torch.norm(c, dim=)
tensor([1.4142, 2.2361, 5.0000])
>>> torch.norm(c, dim=).size()
torch.Size([])
>>> torch.norm(c, dim=)
tensor([3.7417, 4.2426])
>>> torch.norm(c, p=, dim=)
tensor([., .])

1)指定dim = 0,因为c的size() = (2,3),所以会去掉其dim=0,得到size()=(3)的结果,所以是纵向求值,计算Frobenius范数

2)p=1, dim= : 即是表示去掉维度1,使用1-范数,得到size()=(2)的结果。所以横向计算各个元素绝对值的和,为([6,6])

下面是多维的情况,其实结果类似:

>>> d = torch.arange(, dtype=torch.float).reshape(,,)
>>> d
tensor([[[., .],
[., .]], [[., .],
[., .]]]) >>> torch.norm(d, dim=(,))
tensor([ 3.7417, 11.2250])
>>> d.size()
torch.Size([, , ])
>>> torch.norm(d, dim=)
tensor([[4.0000, 5.0990],
[6.3246, 7.6158]]) >>> d[,:,:]
tensor([[., .],
[., .]])
>>> d[,:,:].size()
torch.Size([, ]) >>> torch.norm(d[,:,:])
tensor(3.7417)
>>> torch.norm(d[,:,:])
tensor(11.2250)

pytorch求范数函数——torch.norm的更多相关文章

  1. numpy的linalg.norm()函数求范数

    函数签名:def norm(x, ord=None, axis=None, keepdims=False) 其中ord参数表示求什么类型的范数,具体参见下表 下面是用代码对一个列表求上面的范数 imp ...

  2. 关于torch.norm函数的笔记

    先看一下它的参数: norm(p='fro', dim=None, keepdim=False, dtype=None) p: the order of norm. 一般来说指定 $p = 1, 2$ ...

  3. Matlab求范数

    对 p = 2,这称为弗罗贝尼乌斯范数(Frobenius norm)或希尔伯特-施密特范数( Hilbert–Schmidt norm),不过后面这个术语通常只用于希尔伯特空间.这个范数可用不同的方 ...

  4. ARTS-S pytorch中backward函数的gradient参数作用

    导数偏导数的数学定义 参考资料1和2中对导数偏导数的定义都非常明确.导数和偏导数都是函数对自变量而言.从数学定义上讲,求导或者求偏导只有函数对自变量,其余任何情况都是错的.但是很多机器学习的资料和开源 ...

  5. 使用python,pytorch求海森Hessian矩阵

    考虑一个函数$y=f(\textbf{x}) (R^n\rightarrow R)$,y的Hessian矩阵定义如下: 考虑一个函数:$$f(x)=b^Tx+\frac{1}{2}x^{T}Ax\\其 ...

  6. p范数(p norm)

    先回顾一下范数的定义(en.wikipedia.org/wiki/Norm_(mathematics)): Given a vector space V over a subfield F of th ...

  7. python常用函数之--求绝对值函数:abs(x)

    python中的求绝对值函数:abs(X) 1. 参数 x 可以是整形也可以是复数,假如是复数的话,就求复数的模. >>> # 整形数字 ... >>> a = 1 ...

  8. hdu 1809 求SG函数

    A New Tetris Game(2) Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  9. agruments应用——求出函数参数的总合&&css函数——设置/读取对象的属性&&当前输入框高亮显

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

随机推荐

  1. destoon7.0后台栏目分类一键获取所有栏目拼音目录

    近期研究DT,从DT4.0一直研究到DT7.0,总算也有些心得.最近重新开发设计了一个信息资讯站点:http://www.xuetong365.com/ 废话不多说,上教程 用于DESTOON7.0系 ...

  2. Spring源码窥探之:Spring AOP初步使用

    AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...

  3. 使用safe-rm替换rm命令,防止误删除

    1.下载safe源码包: wget https://launchpad.net/safe-rm/trunk/0.12/+download/safe-rm-0.12.tar.gz 2.解压safe-rm ...

  4. python同时取每个列表的第一个元素

    在实际爬虫开发中, 经常用到列表保存数据, 在使用这些数据的时候,需要要取每个列表里的第一个元素进行拼接. 就需要用到python的内置方法:“zip()" # 现在有3个列表:li_1, ...

  5. Java8新特性(拉姆达表达式lambda)

    一.函数式接口 函数式接口(functional interface 也叫功能性接口,其实是同一个东西).简单来说,函数式接口是只包含一个方法的接口.比如Java标准库中的java.lang.Runn ...

  6. win32线程栈溢出问题 (一)

    一.什么是线程栈溢出 我们都知道,每一个win32线程都会开辟一个空间,用来临时存储线程执行时所调用的一系列函数的参数.返回地址和局部变量及其他上下文信息.这个空间就是线程的栈区.栈区的容量是有限的, ...

  7. Qt读写三种文件,QSettings读ini配置文件,QJsonDocument读JSON文件,QDomDocument读xml文件

    第一种INI配置文件 .ini 文件是Initialization File的缩写,即初始化文件. 除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户 ...

  8. 汇编语言笔记 CALL和RET指令

    转载地址:http://www.cnblogs.com/dennisOne ☞模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程 ...

  9. LibreOJ #527. 「LibreOJ β Round #4」框架

    二次联通门 : LibreOJ #527. 「LibreOJ β Round #4」框架 /* LibreOJ #527. 「LibreOJ β Round #4」框架 %% xxy dalao 对于 ...

  10. flutter 监听返回

    在项目中遇到了一个场景,A页面必须返回某个tab页,但是A页面可能会调到B,再跳到C,最后回到A.这个时候A的返回肯定是C. 想了一些解决方案,都不如监听A页面的实体键返回或者虚拟键返回来的快速便捷. ...