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)

最新文章

  1. C++:基类与派生类对象之间的赋值兼容关系
  2. PHP json_encode中日语问题
  3. 最近升级了一下小老婆(8核 2x8G DDR3 128G SSD)
  4. 百度oauth2.0 WEB 链接
  5. Hive索引
  6. ongl 表达式
  7. 手机端viewport的设置规范
  8. NUnit3 Test Adapter vs2015
  9. Docker - 容器编排工具 compose 之安装
  10. MySQL中information_schema数据库的内容
  11. 爬取5K分辨率超清唯美壁纸
  12. python学习:购物车程序
  13. 查看jar包的jdk版本
  14. 用svm来做回归预测(python)
  15. keepalived+LVS实现网站负载均衡和HA
  16. ARTS(一)
  17. 20155228 2017-5-10 课堂测试:Arrays和String单元测试
  18. 安装 Android Studio 2.3 详细过程及错误解决
  19. 配置 Tomcat 服务 和 自启动
  20. 一次tomcat的调优记录

热门文章

  1. 微信小程序~map组件z-index无效
  2. 51nod 2497 数三角形
  3. 实现多层DIV叠加的js事件穿透
  4. keras模块之-优化器(optimizers)--笔记
  5. 安装 uwsgi报错解决
  6. 数码管动态显示——74HC04
  7. 转发标签forward
  8. 鼠标经过图片会移动(css3过渡,overflow:hidden)
  9. 15、Work原理及源码分析
  10. Pytest权威教程11-模块及测试文件中集成doctest测试