范数的意义与计算方法

news2025/2/26 5:54:20

1. 范数的意义

范数可以简单的理解为“距离”。由于向量是既有大小又有方向的量,所以向量是不能直接比较大小的,但是范数提供了一种方法,可以将所有的向量转化为一个实数,然后就可以比较向量的大小了。(注:本文我们只讨论向量范数,向量范数表征向量空间中向量的大小,另一种叫矩阵范数,表征矩阵引起变化的大小。本文地址:https://blog.csdn.net/bluishglc/article/details/128642156,转载请注明出处)

2. 范数的计算方法

范数并不是一个数,而是一组数,我们先了解一下最常用的L-2范数范数,它的计算方法是:将向量的每一个分量平方后再求和,然后对和开平方,得到的就是这个向量的L-2范数范数了,使用公式描述就是:

  • L-2范数

请添加图片描述

公式1:L-2范数计算公式

其中x1到xn是向量中的每一个分量。L-2范数范数度量的是向量到原点的距离,这个距离正是向量的“模”(Magnitude)(“模”指的就是向量的长度)。我们将在后面深入介绍L-2范数及其应用。

  • L-1范数

L1型范数的就是所有元素的绝对值之和,计算公式如下:

请添加图片描述

公式2:L-1范数计算公式

对于L-1范数的应用我们留待以后介绍。

  • L-P范数

前面说过:范数并不是一个数,而是一组数,这取决于对每一个分量求的是几次方和对和开的几次方根,通用的范数公式是这样:

请添加图片描述

公式3:L-P范数计算公式

当P取2时,上述公式就是L-2范数,当P取1时,上述公式就是L-1范数。

3. “两个向量间的”L-2范数

我们说范数度量的是两个向量之间的距离,即:度量的是它们之间的相似程度或者说差异程度,但是从L-2范数的计算公式上可以看出,它只用了一个向量,这个怎么解释呢?其实L-2范数计算的是:向量到原点的距离。我们来看下面这个公式:

请添加图片描述

公式4:(两个向量间的)L-P范数计算公式

这是L-P范数的另一种表述形式,它计算的是两个向量(ax, ay, …, az)和(bx, by, …, bz)之间的距离。为了便于区分,我们把前面的L-2范数公式称为:(单向量)L-2范数公式,前后对比一下就会发现:当P=2,B=(0, 0, …, 0)时,就会“退化”成(单向量)L-2范数公式。所以说:(单向量)L-2范数计算的向前向量和0向量(原点)之间的距离,由于原点处的向量各分量均为0,减与不减没有分别别,所以才看上去只有一个向量参与计算。此外,当P=2时,上述公式计算出的“两个向量间的”距离就是欧式距离

利用这个可以直接计算两向量间距离的L-2范数公式,我们用一个例子看一下如何计算两个向量间的欧式距离。假设二维平面上有A(2,3)和B(3,1)两个点,如图所示:

在这里插入图片描述

图1:两个向量间的“距离

A,B同时也是两个向量,套用L-2范数范数计算公式,可以计算出向量A(2,3)的L-2范数范数约为:3.6,这个值也是向量A的模,也就是A点到原点的距离。同理,向量B(3,1)的L-2范数范数约为:3.16。我们现在可以说:向量A(2,3)到0向量(0,0)的距离是3.6,向量B(3,1)到0向量(0,0)的距离是3.16。那向量A到向量B的距离怎么算呢?套用上面的公式,可得结果约为2.236, 计算过程如下:

在这里插入图片描述
备注:目前互联网上的文章对标准L-2范数公式没有定论,有的使用是公式1(单向量版本),有的使用的是公式1(两向量差版本),虽然两个公式其实是统一的,但是从NumPy的计算方式来看,计算L-2范数使用的是公式1。

4. 使用NumPy计算范数

虽然范数的计算规则并不复杂,但是对于元素数量较多的向量来说,计算起来还是很麻烦的,为此,NumPy提供了专门用于计算各型范数的函数:numpy.linalg.norm() ,下图解释了该函数3个核心参数的意义:

请添加图片描述

5. 计算(单向量)范数

现在我们就用NumPy的norm函数去计算一个二维数组的L-2范数。在下面的示例代码中,我们没有显式设定ord参数,所以求的是L-2范数。对于axis参数的设置符合NumPy的默认惯例:

  • 不设置axis参数是求整个数组(所有元素)的范数
  • 显式设置axis=0是求列向量的范数
  • 显式设置axis=1是求行向量的范数
import numpy as np
# author: https://laurence.blog.csdn.net/

samples=[[-1, 1, 3],
         [-1, 3, 2]]

# 计算列向量的L2范数
samples_norms = np.linalg.norm(samples, axis=0)
print(f"samples norms by column: \n{samples_norms}")

# 计算行向量的L2范数
samples_norms = np.linalg.norm(samples, axis=1)
print(f"samples norms by row: \n{samples_norms}")

# 计算整个二维数组(即所有元素)的L2范数
samples_norms = np.linalg.norm(samples)
print(f"samples norm: \n{samples_norms}")

程序输出:

samples norms by column: 
[1.41421356 3.16227766 3.60555128]
samples norms by row: 
[3.31662479 3.74165739]
samples norm: 
5.0

计算(两向量间的)范数(相似度)

下面我们从单一向量拓展到计算两个向量间的范数。我们就直接借用图1所示的案例,计算向量A(2,3)和B(3,1)间的距离。NumPy并没有直接提供相应的函数,但是这个计算只需拆解为两步就能完成,所以还是非常简单的。首先,向量A(2,3)和B(3,1)间的距离其实就是向量B减去向量A得到的一个差值向量,它的“长度”就是AB间的距离。所以我们只需要求出向量B减去向量A的差值向量,然后用norm函数算出它的l-2范数就可以了。NumPy也为我们直接提供了向量的减法支持,以下是实际代码:

import numpy as np
# author: https://laurence.blog.csdn.net/

A = np.array([2,3])
B = np.array([3,1])

# 使用NumPy数组减法直接求得差向量
AB = B-A

print(f"AB = {AB}")
# 计算差向量的大小(L-2范数),结果就是向量A到向量B的“距离”
# 也就是度量向量A到向量B相似程度的一个数值!
ab_norm = np.linalg.norm(AB)
print(f"Distance between A and B: {ab_norm}")

程序输出:

AB = [ 1 -2]
Distance between A and B: 2.23606797749979

参考资料:

Normalization using NumPy norm

Vector Norms: quick explanation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/155965.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【计算机视觉】Pooling层的作用以及如何进行反向传播

问题 CNN网络在反向传播中需要逐层向前求梯度,然而pooling层没有可学习的参数,那它是如何进行反向传播的呢? 此外,CNN中为什么要加pooling层,它的作用是什么? Pooling层 CNN一般采用average pooling或max pooling来进行池化操作,而池化操作会改变feature map的大小,…

swagger的使用与步骤

1、导入maven工程首先我们创建一个 Spring Boot 项目&#xff0c;并引入 Swagger3 的核心依赖包&#xff0c;如下&#xff1a;<dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.…

2022年度游戏本行业数据报告:十大热门品牌销量排行榜

2022年游戏本市场的总体局面是&#xff1a;产品竞争极为激烈&#xff0c;同时又各具特色卖点。今年的游戏本市场&#xff0c;市场格局并未有较大的变化&#xff0c;但是新技术、新产品层出不穷&#xff0c;各个游戏本厂商们通过不断创新、提升产品性能&#xff0c;推出了体验感…

高等数学(第七版)同济大学 习题11-5 个人解答

高等数学&#xff08;第七版&#xff09;同济大学 习题11-5 函数作图软件&#xff1a;Mathematica 1.按对坐标的曲面积分的定义证明公式∬Σ[P1(x,y,z)P2(x,y,z)]dydz∬ΣP1(x,y,z)dydz∬ΣP2(x,y,z)dydz.\begin{aligned}&1. \ 按对坐标的曲面积分的定义证明公式\\\\&…

【javascript】有计算功能的简易计算器

外观不满意&#xff0c;可以自行修改。 主要用到的有&#xff1a;grid布局 js原生 阿里字体图标 eval函数 eval() 函数计算 JavaScript 字符串&#xff0c;并把它作为脚本代码来执行。 如果参数是一个表达式&#xff0c;eval() 函数将执行表达式。如果参数是Javascript语句&a…

Vmware 16 安装 Anolis 8.6

Vmware 安装 Anolis一.Anoliso镜像下载二.Vmware虚拟机安装Anolisos1.新建自定义2.稍后安装操作系统3.选择系统4.设置虚拟机名称和安装位置5.按需修改磁盘大小6.最后点击完成即可7.编辑虚拟机设置8.选择镜像8.开启虚拟机9.安装10.设置root密码并开始安装11.完成后重启12.登录三…

Mysql底层原理与性能调优

在工作中&#xff0c;公司就线上生产环节&#xff0c;有没有时常碰到过一些慢SQL查询&#xff0c;那我相信大多时候第一时间想到的优化策略&#xff0c;我相信肯定就是索引&#xff0c;可能第一时间就会想到&#xff0c;看一下SQL是不是有加合适的索引&#xff0c;它的条件里面…

1.3 认识程序开发

文章目录1.程序开发流程1.1 软件定义期&#xff08;研究分析阶段&#xff09;1.2 软件开发期&#xff08;开发阶段&#xff09;1.3 软件上线期&#xff08;部署运行阶段&#xff09;2.认识浏览器2.1 浏览器如何实现访问网站的&#xff1f;2.2 HTTP协议2.3 URL地址的构成2.4 如何…

C++/Qt 小知识记录2

工作中遇到的一些小问题&#xff0c;总结的小知识记录&#xff1a;C/Qt 小知识RGBA/ARGB转16进制颜色int与RGB互转int转Hex值VS2015代码粗略统计QTableWidget设置列宽设置整行选中Item设置可选中但不可编辑C std路径相关操作文件写出绝对路径转为相对路径字符替换打印出GBK的平…

OAuth 2.0(四):手把手带你写代码接入 OAuth 2.0 授权服务

一、业务背景 近期团队帮银行做了一个互动营销活动&#xff0c;活动入口在行方的 App 上&#xff0c;当用户在行方 App 点击活动 banner 页跳转活动的时候参与。 在进活动之前作为业务方自然需要知道参与活动的人是谁&#xff0c;如何给它构建登录态。 这就是为什么橘长这边需…

Node.js--》详解express中的身份认证

目录 Web开发模式 身份认证 Session认证机制 在Express中使用Session认证 JWT认证机制 在Express中使用JWT Web开发模式 目前主流的Web开发模式有两种&#xff1a; 基于服务端渲染的传统Web开发模式 服务端渲染的概念&#xff1a;服务器发送给客户端的HTML页面&#x…

【JavaEE】进入Web开发的世界-CSS

目录 一、CSS的基本规则 二、HTML中如何引入CSS规则&#xff08;html资源如何和css资源产生联系&#xff09; 三、选择器&#xff08;selector&#xff09;规则 3.1各种选择器 3.2普通选择器使用 3.3选择器之间的优先级规则(即覆盖规则) 3.4进一步的选择器规则 3.5伪类…

测试必会 Docker 实战(一):掌握高频命令,夯实内功基础

在 Dokcer 横空出世之前&#xff0c;应用打包一直是大部分研发团队的痛点。在工作中&#xff0c;面对多种服务&#xff0c;多个服务器&#xff0c;以及多种环境&#xff0c;如果还继续用传统的方式打包部署&#xff0c;会浪费大量时间精力。在 Docker 出现后&#xff0c;它以更…

Java设计模式-外观模式Facade

介绍 外观模式&#xff08;Facade&#xff09;&#xff0c;也叫“过程模式&#xff1a;外观模式为子系统中的一组接口提供一个一致的界面&#xff0c;此模式定义了一个高层接口&#xff0c;这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口&#xff0c;用以…

回溯法--n皇后问题

回溯法有两个模板--子集树、排列树&#xff0c;他们有回溯法的共同特点&#xff1a;深度优先搜索&#xff0c;如果一条路走不通&#xff0c;再退回来&#xff08;类似递归&#xff09;问题描述八皇后问题的历史八皇后问题最早是由国际象棋棋手马克斯贝瑟尔&#xff08;Max Bezz…

常用的字符串与内存操作函数(2)

Tips 1. 2. strerror() 1. C语言的库函数在运行的时候&#xff0c;如果发生错误&#xff0c;就会将错误码存在一个变量里面。这个变量就是&#xff1a;errno&#xff08;全局变量&#xff09;。 2. 这个函数的功能在于把错误码转化为对应的错误信息&#xff0c;错误信息…

macOS 13.2 开发者预览版 Beta2(22D5038i)发布

黑果魏叔 1 月 11 日消息&#xff0c;苹果今日向 Mac 电脑用户推送了 macOS 13.2 开发者预览版 Beta 2 更新&#xff08;内部版本号&#xff1a;22D5038i&#xff09;&#xff0c;本次更新距离上次发布隔了 27 天。macOS Ventura 带来了台前调度、连续互通相机、FaceTime 通话接…

纯CSS输入区域下划线

使用纯CSS实现文本输入的下划线&#xff0c;简洁有效&#xff0c;实现效果&#xff1a; 实现方式 实现方式也很简单&#xff1a; background: linear-gradient(#999 1px, transparent 0) 0 -1px/100% 2em; 例子代码&#xff1a; <!DOCTYPE html> <html lang"e…

【C语言航路】第十站:指针(三)深刻理解指针运算

目录 一、深刻理解指针和数组 1.一维数组 2、字符数组 &#xff08;1&#xff09;字符变量存放到数组中 &#xff08;2&#xff09;字符串存放到字符数组 &#xff08;3&#xff09; 字符串存放到一个指针中 3.二维数组 二、指针与数组经典笔试题 1.题1 2.题2 3.题3…

MCU-51:单片机之红外遥控(外部中断)

目录一、红外遥控简介二、硬件电路三、基本发送与接收四、NEC码五、代码演示5.1 红外遥控5.2 红外遥控电机调速注意&#xff1a;一定要看一、红外遥控简介 红外发射装置 也就是通常我们说的红外遥控器是由键盘电路、红外编码电路、电源电路和红外发射电路组成。红外发射电路的…