torch.norm的理解
官方文档
torch.norm是对输入的Tensor求范数
1.版本1--------------求张量范数
torch.norm(input, p=2) → float
参数:
- input (Tensor) – 输入张量
- p (float,optional) – 范数计算中的幂指数值
这是pytorch中的默认版本。输入为一个Tensor,输出是一个数。没啥多说的,直接上例子:
- import torch
- import torch.tensor as tensor
- a = torch.ones((2,3)) #建立tensor
- a2 = torch.norm(a) #默认求2范数
- a1 = torch.norm(a,p=1) #指定求1范数
- print(a)
- print(a2)
- 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
- import torch
- import torch.tensor as tensor
- a = tensor([[1, 2, 3, 4],
- [1, 2, 3, 4]]).float() #norm仅支持floatTensor,a是一个2*4的Tensor
- a0 = torch.norm(a,p=2,dim=0) #按0维度求2范数
- a1 = torch.norm(a,p=2,dim=1) #按1维度求2范数
- print(a0)
- print(a1)
可以看输出,dim=0是对0维度上的一个向量求范数,返回结果数量等于其列的个数,也就是说有多少个0维度的向量,将得到多少个范数。dim=1同理。
再看keepdim
其含义是保持输出的维度,挺抽象的,我们还是通过具体例子来看吧。
- a = torch.rand((2,3,4))
- at = torch.norm(a,p=2,dim=1,keepdim=True) #保持维度
- af = torch.norm(a,p=2,dim=1,keepdim=False) #不保持维度
- print(a.shape)
- print(at.shape)
- print(af.shape)
我们重点来看一下,输入tensor,keepdim=True和keepdim=False的形状。
可以发现,当keepdim=False时,输出比输入少一个维度(就是指定的dim求范数的维度)。而keepdim=True时,输出与输入维度相同,仅仅是输出在求范数的维度上元素个数变为1。这也是为什么有时我们把参数中的dim称为缩减的维度,因为norm运算之后,此维度或者消失或者元素个数变为1.
torch.norm的理解相关推荐
- torch.norm
torch.norm 范数1,绝对值求和 范数2,平方和求开根号2 范数3,平方和求开根号3 import torch import torch.tensor as tensora = tensor( ...
- 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 ...
- PyTorch中torch.norm函数详解
torch.norm() 是 PyTorch 中的一个函数,用于计算输入张量沿指定维度的范数.具体而言,当给定一个输入张量 x 和一个整数 p 时,torch.norm(x, p) 将返回输入张量 x ...
- torch.norm()与F.normalize()的区别
两者区别 F.normalize()在torch.norm()的基础上进行了标准化,即: F.normalize(x) = x / torch.norm(x) 代码示例 import torch im ...
- torch.nn.Embedding理解
Pytorch官网的解释是:一个保存了固定字典和大小的简单查找表.这个模块常用来保存词嵌入和用下标检索它们.模块的输入是一个下标的列表,输出是对应的词嵌入. torch.nn.Embedding(nu ...
- 【Pytorch】torch.nn.Conv1d()理解与使用
官方文档:https://pytorch.org/docs/stable/generated/torch.nn.Conv1d.html?highlight=nn%20conv1d#torch.nn.C ...
- torch norm() Formalize()
torch中的normalize的功能是将一个向量单位化,比如一个向量为: x = [1,2,3,4] 则标准化过程为先求出这个向量的二范数,然后将每一个维度上面的值都除以这个二范数. import ...
- torch gather函数理解 图解
看了好几篇了,没有直接看明白,特梳理之 功能 数据收集,函数torch.gather(input, dim, index, out=None) → Tensor 沿给定轴 dim ,将输入索引张量 i ...
- matlab norm如何理解,MATLAB 中NORM运用
格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM Matrix or vecto ...
- torch.nn.Embedding()理解
https://blog.csdn.net/tommorrow12/article/details/80896331
最新文章
- mysql 5.5 编译参数_Mysql 5.5 编译参数
- Android提升篇系列:Android项目代码优化实践
- windows查看文件MD5值
- mysql高级查询 二_MySQL高级查询(二)
- Android5.0L因SystemUI ANR导致的黑屏问题分析
- vue 指令 v-once
- 树和二叉树2——输出广义表形式(带括号)二叉树
- JavaScript在一个数组中插入另一个数组
- Proteus8.9 下载与安装 以及大多数问题
- IOS开发之宏的深度学习
- PAT乙级练习题1028 人口普查
- 第五章 国内著名网络数据库系统
- Java Lempel-Ziv
- linux如何卸载lightdm,在Linux Deepin上安装Pantheon Lightdm主题
- NoSQL在腾讯的应用实践
- 鹰眼轨迹android,鹰眼轨迹服务
- 山东理工大学-2022级-程序设计基础I-实验9 字符串
- 历届试题 九宫重排 广度优先搜索+康拓排序
- html前世今生以及与css和js的关系
- CNN非接触掌纹识别改进过程(二)