nn.functional.normalize
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)20.2382=(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)20.0036=(−0.9216)2+(0.2382)2+(0.0036)2+(0.1124)20.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)20.0125
nn.functional.normalize相关推荐
- torch.nn.functional.normalize
torch normalize torch.nn.functional.normalize 范数 0范数,1范数,2范数 见范数blog: https://blog.csdn.net/cursethe ...
- torch.nn.functional.cross_entropy.ignore_index
ignore_index表示计算交叉熵时,自动忽略的标签值,example: import torch import torch.nn.functional as F pred = [] pred.a ...
- 【pytorch】torch.nn.functional.pad的使用
torch.nn.functional.pad 是对Tensor做padding,输入的参数必须的torch的Tensor 一般地,习惯上会做如下声明 import torch.nn.function ...
- torch.nn.functional.pad
作用 用来对一个tensor进行填充.最典型的就是图片了,原来是2*2的,现在想要变成3*3的,那么就需要填充,此时有很多选择,例如是在原来的右上进行填充还是左下?又或者是左上?等等. 这个函数就可以 ...
- nn.Upsampling is deprecated. Use nn.functional.interpolate instead.
解决方法: x2_in = nn.functional.interpolate(x2_in, scale_factor=2, mode='bilinear',align_corners=True) # ...
- PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx
PyTorch : torch.nn.xxx 和 torch.nn.functional.xxx 在写 PyTorch 代码时,我们会发现在 torch.nn.xxx 和 torch.nn.funct ...
- pytorch笔记:torch.nn.functional.pad
1 torch.nn.functional.pad函数 torch.nn.functional.pad是pytorch内置的tensor扩充函数,便于对数据集图像或中间层特征进行维度扩充 torch. ...
- Lesson 8.38.4 二分类神经网络torch.nn.functional实现单层二分类网络的正向传播
二.二分类神经网络:逻辑回归 1 二分类神经网络的理论基础 线性回归是统计学经典算法,它能够拟合出一条直线来描述变量之间的线性关系.但在实际中,变量之间的关系通常都不是一条直线,而是呈现出某种曲线关系 ...
- torch.nn.functional.pad(input, pad, mode=‘constant‘, value=0)
torch.nn.functional.pad(input, pad, mode='constant', value=0) 填充Tensor. 填充大小: 填充input的某些维度的填充大小从最后一个 ...
- 剖析 | torch.nn.functional.softmax维度详解
写代码,看代码都要心中有数,输入是什么,输出是什么,结果是如何计算出来的. 一维数据: # -*- coding: utf-8 -*- import torch import numpy as np ...
最新文章
- CICS FILE OPEN
- 【OpenCV3】直线拟合——cv::fitLine()详解
- Android多开和虚拟化--Docker概念的详细介绍
- Windows Phone 7Silverlight控件之--Panorama
- python字符串转date,在Python上将字符串转换为Date类型
- Redis的中并发问题的解决方案小结
- MongoDB-与SpringBoot集成
- 在用户控件中动态添加控件及事件
- 最大功率追踪点 matlab光伏,光伏阵列最大功率点跟踪(范文1)
- 国产配色网站,简单好用,包含在线图片取色工具
- 缓存问题(二) 布隆过滤器(Bloom Filter) 介绍和原理
- CyanogenMod源码下载和编译
- (19年最新,操作极简)linux下使用xmind zen破解版
- node获取系统字体
- python时间序列分析包_python关于时间序列的分析
- vue项目查看脚手架版本报错
- amd k14主板参数_看U选主板:AMD A8-5600K主板怎么选
- 淘宝视频的跨模态检索
- 使用OpenSSL1.1.1中的libcrypto库进行RSA加密与解密数据
- 电气控制基础-解析软启动器