torch.nn.functional.normalize

官方文档: normalize

Performs LpL_{p}Lp​ normalization of inputs over specified dimension.

作用: 在指定的维度计算ppp范数,默认的计算是2范数

计算公式如下

v=vmax(∣∣v∣∣p,ϵ)v = \frac{v}{max(||v||_{p}, \epsilon)} v=max(∣∣v∣∣p​,ϵ)v​

下面对函数的参数进行解释

torch.nn.functional.normalize(input, p=2.0, dim=1, eps=1e-12, out=None)

  • input: 输入tensor
  • p: 归一化的范数,默认为2范数
  • dim: 计算维度 (the dimension to reduce)
  • eps: 防止分母为0的一个很小得数
  • out: 输出tensor,如果指定了这个tensor,操作会变得不可微

下面举两个例子,一个二维一个三维

二维例子

input2 = torch.randn((3, 4))
output2_1 = nn.functional.normalize(input2)
print(output2_1)'''
input2:
tensor([[-0.9216,  0.2382,  0.0036,  0.1124],[ 0.6481,  0.0569,  2.6192,  0.6064],[-0.5110, -0.4260,  1.5873, -0.3685]])output2_1
tensor([[-0.9615,  0.2485,  0.0037,  0.1173],[ 0.2343,  0.0206,  0.9469,  0.2192],[-0.2903, -0.2420,  0.9018, -0.2094]])
'''

normalize默认是计算dim=1的,输入矩阵是(3,4),计算第1维就是4那一维(dim=0代表3那一维)。如下图所示,dim=1代表4那一维度,就是红色的那四个元素计算归一化,蓝色同理

−0.9615=−0.9216(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)20.2485=0.2382(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)20.0037=0.0036(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)20.1173=0.1124(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)2\begin{aligned} -0.9615 &= \frac{-0.9216}{\sqrt{(-0.9216)^{2}+(0.2382)^{2}+(0.0036)^{2}+(0.1124)^{2}}} \\ 0.2485 &= \frac{0.2382}{\sqrt{(-0.9216)^{2}+(0.2382)^{2}+(0.0036)^{2}+(0.1124)^{2}}} \\ 0.0037 &= \frac{0.0036}{\sqrt{(-0.9216)^{2}+(0.2382)^{2}+(0.0036)^{2}+(0.1124)^{2}}} \\ 0.1173 &= \frac{0.1124}{\sqrt{(-0.9216)^{2}+(0.2382)^{2}+(0.0036)^{2}+(0.1124)^{2}}} \end{aligned} −0.96150.24850.00370.1173​=(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)2​−0.9216​=(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)2​0.2382​=(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)2​0.0036​=(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)2​0.1124​​

三维例子

input3 = torch.randn((2, 3, 4))
output3_1 = nn.functional.normalize(input3)
print(output3_1)'''
input3
tensor([[[ 0.0125,  0.0806,  1.0750, -0.9401],[ 0.1409,  2.8251, -0.2162,  0.9788],[-1.1588,  0.7537, -0.0691, -0.6371]],[[-0.2402, -0.8545,  1.2948, -1.4992],[-0.1676, -1.0821,  1.7947, -1.5175],[-0.1969,  0.3079, -1.2304, -0.7987]]])output3_1
tensor([[[ 0.0107,  0.0276,  0.9784, -0.6270],[ 0.1207,  0.9658, -0.1968,  0.6529],[-0.9926,  0.2577, -0.0629, -0.4250]],[[-0.6805, -0.6048,  0.5114, -0.6582],[-0.4749, -0.7659,  0.7088, -0.6662],[-0.5580,  0.2180, -0.4859, -0.3507]]])
'''

这里dim=1也就是3那一维,所以对3个数进行归一化,这里以0.0107为例

0.0107=0.0125(0.0125)2+(0.1409)2+(−1.1588)20.0107 = \frac{0.0125}{\sqrt{(0.0125)^{2}+(0.1409)^{2}+(-1.1588)^{2}}} 0.0107=(0.0125)2+(0.1409)2+(−1.1588)2​0.0125​

nn.functional.normalize相关推荐

  1. torch.nn.functional.normalize

    torch normalize torch.nn.functional.normalize 范数 0范数,1范数,2范数 见范数blog: https://blog.csdn.net/cursethe ...

  2. torch.nn.functional.cross_entropy.ignore_index

    ignore_index表示计算交叉熵时,自动忽略的标签值,example: import torch import torch.nn.functional as F pred = [] pred.a ...

  3. 【pytorch】torch.nn.functional.pad的使用

    torch.nn.functional.pad 是对Tensor做padding,输入的参数必须的torch的Tensor 一般地,习惯上会做如下声明 import torch.nn.function ...

  4. torch.nn.functional.pad

    作用 用来对一个tensor进行填充.最典型的就是图片了,原来是2*2的,现在想要变成3*3的,那么就需要填充,此时有很多选择,例如是在原来的右上进行填充还是左下?又或者是左上?等等. 这个函数就可以 ...

  5. nn.Upsampling is deprecated. Use nn.functional.interpolate instead.

    解决方法: x2_in = nn.functional.interpolate(x2_in, scale_factor=2, mode='bilinear',align_corners=True) # ...

  6. PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx

    PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx 在写 PyTorch 代码时,我们会发现在 torch.nn.xxx 和 torch.nn.funct ...

  7. pytorch笔记:torch.nn.functional.pad

    1 torch.nn.functional.pad函数 torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充 torch. ...

  8. Lesson 8.38.4 二分类神经网络torch.nn.functional实现单层二分类网络的正向传播

    二.二分类神经网络:逻辑回归 1 二分类神经网络的理论基础 线性回归是统计学经典算法,它能够拟合出一条直线来描述变量之间的线性关系.但在实际中,变量之间的关系通常都不是一条直线,而是呈现出某种曲线关系 ...

  9. torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)

    torch.nn.functional.pad(input, pad, mode='constant', value=0) 填充Tensor. 填充大小: 填充input的某些维度的填充大小从最后一个 ...

  10. 剖析 | torch.nn.functional.softmax维度详解

    写代码,看代码都要心中有数,输入是什么,输出是什么,结果是如何计算出来的. 一维数据: # -*- coding: utf-8 -*- import torch import numpy as np ...

最新文章

  1. CICS FILE OPEN
  2. 【OpenCV3】直线拟合——cv::fitLine()详解
  3. Android多开和虚拟化--Docker概念的详细介绍
  4. Windows Phone 7Silverlight控件之--Panorama
  5. python字符串转date,在Python上将字符串转换为Date类型
  6. Redis的中并发问题的解决方案小结
  7. MongoDB-与SpringBoot集成
  8. 在用户控件中动态添加控件及事件
  9. 最大功率追踪点 matlab光伏,光伏阵列最大功率点跟踪(范文1)
  10. 国产配色网站,简单好用,包含在线图片取色工具
  11. 缓存问题(二) 布隆过滤器(Bloom Filter) 介绍和原理
  12. CyanogenMod源码下载和编译
  13. (19年最新,操作极简)linux下使用xmind zen破解版
  14. node获取系统字体
  15. python时间序列分析包_python关于时间序列的分析
  16. vue项目查看脚手架版本报错
  17. amd k14主板参数_看U选主板:AMD A8-5600K主板怎么选
  18. 淘宝视频的跨模态检索
  19. 使用OpenSSL1.1.1中的libcrypto库进行RSA加密与解密数据
  20. 电气控制基础-解析软启动器

热门文章

  1. windows下使用curl命令
  2. SolidWorks to URDF转换及常见机器人模型
  3. 《金牌网管师——助理级网吧网管》目录
  4. 2018校招-挂面-H3C-技术支持工程师
  5. 来电弹屏功能在呼叫中心的应用
  6. Class 'Qcloud\Sms\SmsSingleSender' not found
  7. 京版国八条终于出来了——京十五条
  8. 数据仓库多维数据模型设计
  9. C# 插入或删除word分页符
  10. Poisson方程的五点差分格式例题求解-Matlab实现