k_d树, KNN算法学习笔记_1 距离和范数

k_d树, KNN算法学习笔记_1 距离和范数

二维树中最近邻搜索的示例。这里,树已经构建好了,每个节点对应一个矩形,每个矩形被分割成两个相等的子矩形,叶子对应于包含单个点的矩形

From Wikipedia


1. k k k近邻法是基本且简单的分类与回归方法。 k k k近邻法的基本做法是:对给定的训练实例点和输入实例点,首先确定输入实例点的 k k k个最近邻训练实例点,然后利用这 k k k个训练实例点的类的多数来预测输入实例点的类。

2. k k k近邻模型对应于基于训练数据集对特征空间的一个划分。 k k k近邻法中,当训练集、距离度量、 k k k值及分类决策规则确定后,其结果唯一确定。

3. k k k近邻法三要素:距离度量、 k k k值的选择和分类决策规则。常用的距离度量是欧氏距离及更一般的pL距离。 k k k值小时, k k k近邻模型更复杂; k k k值大时, k k k近邻模型更简单。 k k k值的选择反映了对近似误差与估计误差之间的权衡,通常由交叉验证选择最优的 k k k

常用的分类决策规则是多数表决,对应于经验风险最小化。

4. k k k近邻法的实现需要考虑如何快速搜索k个最近邻点。kd树是一种便于对k维空间中的数据进行快速检索的数据结构。kd树是二叉树,表示对 k k k维空间的一个划分,其每个结点对应于 k k k维空间划分中的一个超矩形区域。利用kd树可以省去对大部分数据点的搜索, 从而减少搜索的计算量。

1.距离度量

在机器学习算法中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离。

x x x y y y为两个向量,求它们之间的距离。

这里用Numpy实现,设和为ndarray <numpy.ndarray>,它们的shape都是(N,)

d d d为所求的距离,是个浮点数(float)。

import numpy as np  #注意:运行代码时候需要导入NumPy库。
from numpy import linalg as npl
import matplotlib.pyplot as plt

numpy.linalg.norm 文档 Notes

对于ord < 1的值,结果严格来说不是数学上的“范数”,但它仍然可能对各种数值目的有用。

下面的这些范数可以计算:

ord矩阵范数向量范数说明
‘fro’Frobenius normFrobenius范数定义为矩阵所有元素的平方和的平方根
‘nuc’nuclear norm核范数是奇异值的和
infmax(sum(abs(x), axis=1))max(abs(x))绝对值的最大值
-infmin(sum(abs(x), axis=1))min(abs(x))绝对值的最小值
0sum(x != 0)非零元素的数量
1max(sum(abs(x), axis=0))as below向量的1范数是绝对值的和
-1min(sum(abs(x), axis=0))as below向量的-1范数是绝对值的最小值
22-norm (largest sing. value)as below向量的2范数是奇异值的最大值
-2smallest singular valueas below向量的-2范数是奇异值的最小值
othersum(abs(x)**ord)**(1./ord)其他值的范数, 即: Minkowski范数

The Frobenius norm is given by [1]:

∣ ∣ A ∣ ∣ F = [ ∑ i , j a b s ( a i , j ) 2 ] 1 / 2 ||A||_F = [\sum_{i,j} abs(a_{i,j})^2]^{1/2} ∣∣AF=[i,jabs(ai,j)2]1/2

核范数是奇异值的和,即:

∣ ∣ A ∣ ∣ ∗ = ∑ i σ i ( A ) ||A||_* = \sum_i \sigma_i(A) ∣∣A=iσi(A)

Frobenius和核范数都只能定义为矩阵,并在x.ndim != 2时引发ValueError


常见范数[2]

向量范数
范数数学表达式描述“距离”类型
0 范数$ |\mathbf{x}|_{0} = #(i \mid x_i \not = 0)$非零向量元素个数之和x 到零点的汉明距离 Hamming Distance
1 范数 ∣ x ∣ 1 = ∑ i ∣ x i ∣ |\mathbf{x}|_{1} = \sum_i \mid x_i \mid x1=ixi向量元素绝对值之和x 到零点的曼哈顿距离 Manhattan Distance
2 范数 ∣ x ∣ 2 = ∑ i x i 2 |\mathbf{x}|_{2} = \sqrt{\sum_i x_i^{2}} x2=ixi2 向量元素绝对值的平方和再开方x 到零点的欧氏距离 Euclidean Distance
p 范数 ∣ x ∣ p = ∑ i x i p p |\mathbf{x}|_{p} = \sqrt[p]{\sum_i x_i^{p}} xp=pixip 向量元素绝对值的p次方和的1/p次幂x 到零点的p阶闵氏距离 Minkowski Distance
∞ \infty 范数 ∣ x ∣ ∞ = max ⁡ ∣ x i ∣ |\mathbf{x}|_{\infty} = \max{ \mid x_i \mid } x=maxxi所有向量元素绝对值中的最大值x 到零点的切比雪夫距离 Chebyshev Distance
− ∞ -\infty 范数 ∣ x ∣ − ∞ = min ⁡ ∣ x i ∣ |\mathbf{x}|_{-\infty} = \min{ \mid x_i \mid } x=minxi所有向量元素绝对值中的最小值-
矩阵范数
范数数学表达式描述
1 范数 ∣ A ∣ 1 = max ⁡ ∑ i ∣ x i , j ∣ |\mathbf{A}|_{1} = \max{ \sum_i \mid x_{i,j} \mid } A1=maxixi,j列和范数,即所有矩阵列向量绝对值之和的最大值
2 范数 ∣ A ∣ 2 = λ |\mathbf{A}|_{2} = \sqrt{\lambda} A2=λ 谱范数,即 A T A A^TA ATA矩阵的最大特征值的开平方
F 范数 ∣ A ∣ F = ∑ i ∑ j x i , j 2 |\mathbf{A}|_{F} = \sqrt{ \sum_i \sum_j x_{i,j}^{2} } AF=ijxi,j2 Frobenius 范数,即矩阵元素绝对值的平方和再开平方
∞ \infty 范数 ∣ A ∣ ∞ = max ⁡ ∑ j ∣ x i , j ∣ |\mathbf{A}|_{\infty} = \max{ \sum_j \mid x_{i,j} \mid } A=maxjxi,j行和范数,即所有矩阵行向量绝对值之和的最大值
− ∞ -\infty 范数 ∣ A ∣ − ∞ = min ⁡ ∣ x i , j ∣ |\mathbf{A}|_{-\infty} = \min{ \mid x_{i,j} \mid } A=minxi,j所有矩阵元素绝对值中的最小值
核范数 ∣ A ∣ ∗ = ∑ i σ i |\mathbf{A}|_{*} = \sum_i \sigma_i A=iσi矩阵奇异值之和

欧氏距离(Euclidean distance)

欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在 m m m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

距离公式:

d ( x , y ) = ∑ i ( x i − y i ) 2 d\left( x,y \right) = \sqrt{\sum_{i}^{}(x_{i} - y_{i})^{2}} d(x,y)=i(xiyi)2

在这里插入图片描述

代码实现:

def euclidean(x, y):return np.sqrt(np.sum((x - y)**2))
ndA = np.asanyarray
p1 = ndA((4, 5))
p2 = ndA((12,16))

euDst_ = lambda p1, p2: np.sqrt(np.sum((p1 - p2)**2))
def euDst(p1, p2):return npl.norm(p1 - p2)

曼哈顿距离(Manhattan distance)

想象你在城市道路里,要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源,曼哈顿距离也称为城市街区距离(City Block distance)。

距离公式:

d ( x , y ) = ∑ i ∣ x i − y i ∣ d(x,y) = \sum_{i}^{}|x_{i} - y_{i}| d(x,y)=ixiyi

在这里插入图片描述

代码实现:

def manhattan(x, y):return np.sum(np.abs(x - y))
manDst_ = lambda p1, p2: np.sum(np.abs(p1 - p2))
def manDst(p1, p2):return npl.norm(p1 - p2, ord=1)

切比雪夫距离(Chebyshev distance)

在数学中,切比雪夫距离(Chebyshev distance)或是L∞度量,是向量空间中的一种度量,二个点之间的距离定义是其各坐标数值差绝对值的最大值。以数学的观点来看,切比雪夫距离是由一致范数(uniform norm)(或称为上确界范数)所衍生的度量,也是超凸度量(injective metric space)的一种。

距离公式:

d ( x , y ) = max ⁡ i ∣ x i − y i ∣ d\left( x,y \right) = \max_{i}\left| x_{i} - y_{i} \right| d(x,y)=imaxxiyi

在这里插入图片描述

若将国际象棋棋盘放在二维直角座标系中,格子的边长定义为1,座标的 x x x轴及 y y y轴和棋盘方格平行,原点恰落在某一格的中心点,则王从一个位置走到其他位置需要的步数恰为二个位置的切比雪夫距离,因此切比雪夫距离也称为棋盘距离。例如位置F6和位置E2的切比雪夫距离为4。任何一个不在棋盘边缘的位置,和周围八个位置的切比雪夫距离都是1。

代码实现:

def chebyshev(x, y):return np.max(np.abs(x - y))
cheDst_ = lambda p1, p2: np.max(np.abs(p1 - p2))
def cheDst(p1, p2):# return np.max(np.abs(p1 - p2))return np.linalg.norm(p1 - p2, ord=np.inf)

闵可夫斯基距离(Minkowski distance)

闵氏空间指狭义相对论中由一个时间维和三个空间维组成的时空,为俄裔德国数学家闵可夫斯基(H.Minkowski,1864-1909)最先表述。他的平坦空间(即假设没有重力,曲率为零的空间)的概念以及表示为特殊距离量的几何学是与狭义相对论的要求相一致的。闵可夫斯基空间不同于牛顿力学的平坦空间。 p p p取1或2时的闵氏距离是最为常用的, p = 2 p= 2 p=2即为欧氏距离,而 p = 1 p =1 p=1时则为曼哈顿距离。

p p p取无穷时的极限情况下,可以得到切比雪夫距离。

距离公式:

d ( x , y ) = ( ∑ i ∣ x i − y i ∣ p ) 1 p d\left( x,y \right) = \left( \sum_{i}^{}|x_{i} - y_{i}|^{p} \right)^{\frac{1}{p}} d(x,y)=(ixiyip)p1

代码实现:

def minkowski(x, y, ):return np.sum(np.abs(x - y)**p)**(1 / p)
mkDst_ = lambda p1, p2, p: np.sum(np.abs(p1 - p2)**p)**(1 / p)
def mkDst(p1, p2, p):# if   p == 1: # 曼哈顿距离#   return npl.norm(p1 - p2, ord=1)# elif p == 2: # 欧式距离#   return npl.norm(p1 - p2)# elif p == np.inf: # 切比雪夫距离#   return npl.norm(p1 - p2, ord=np.inf)# else: # 闵可夫斯基距离return npl.norm(p1 - p2, ord = p) # ?# ord : {non-zero int, inf, -inf, 'fro', 'nuc'}, optional

汉明距离(Hamming distance)

汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以表示两个字,之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。

距离公式:

d ( x , y ) = 1 N ∑ i 1 x i ≠ y i d\left( x,y \right) = \frac{1}{N}\sum_{i}^{}1_{x_{i} \neq y_{i}} d(x,y)=N1i1xi=yi
在这里插入图片描述

代码实现:

def hamming(x, y):return np.sum(x != y) / len(x)
hmDst_ = lambda p1, p2: np.sum(p1 != p2) / len(p1)
def hmDst(p1, p2):return npl.norm(p1 - p2, ord=0) / len(p1)

余弦相似度(Cosine Similarity)

余弦相似性通过测量两个向量的夹角的余弦值来度量它们之间的相似性。0度角的余弦值是1,而其他任何角度的余弦值都不大于1;并且其最小值是-1。从而两个向量之间的角度的余弦值确定两个向量是否大致指向相同的方向。两个向量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两个向量指向完全相反的方向时,余弦相似度的值为-1。这结果是与向量的长度无关的,仅仅与向量的指向方向相关。余弦相似度通常用于正空间,因此给出的值为0到1之间。

在这里插入图片描述

二维空间为例,上图的 a a a b b b是两个向量,我们要计算它们的夹角θ。余弦定理告诉我们,可以用下面的公式求得:

cos ⁡ θ = a 2 + b 2 − c 2 2 a b \cos\theta = \frac{a^{2} + b^{2} - c^{2}}{2ab} cosθ=2aba2+b2c2

假定 a a a向量是 [ x 1 , y 1 ] \left\lbrack x_{1},y_{1} \right\rbrack [x1,y1] b b b向量是 [ x 2 , y 2 ] \left\lbrack x_{2},y_{2} \right\rbrack [x2,y2],两个向量间的余弦值可以通过使用欧几里得点积公式求出:

cos ⁡ ( θ ) = A ⋅ B ∥ A ∥ ∥ B ∥ = ∑ i = 1 n A i × B i ∑ i = 1 n ( A i ) 2 × ∑ i = 1 n ( B i ) 2 \cos\left( \theta \right) = \frac{A \cdot B}{\parallel A \parallel \parallel B \parallel} = \frac{\sum_{i = 1}^{n}A_{i} \times B_{i}}{\sqrt{\sum_{i = 1}^{n}(A_{i})^{2} \times \sqrt{\sum_{i = 1}^{n}(B_{i})^{2}}}} cos(θ)=A∥∥BAB=i=1n(Ai)2×i=1n(Bi)2 i=1nAi×Bi

cos ⁡ ( θ ) = A ⋅ B ∥ A ∥ ∥ B ∥ = ( x 1 , y 1 ) ⋅ ( x 2 , y 2 ) x 1 2 + y 1 2 × x 2 2 + y 2 2 = x 1 x 2 + y 1 y 2 x 1 2 + y 1 2 × x 2 2 + y 2 2 \cos\left( \theta \right) = \frac{A \cdot B}{\parallel A \parallel \parallel B \parallel} = \frac{\left( x_{1},y_{1} \right) \cdot \left( x_{2},y_{2} \right)}{\sqrt{x_{1}^{2} + y_{1}^{2}} \times \sqrt{x_{2}^{2} + y_{2}^{2}}} = \frac{x_{1}x_{2} + y_{1}y_{2}}{\sqrt{x_{1}^{2} + y_{1}^{2}} \times \sqrt{x_{2}^{2} + y_{2}^{2}}} cos(θ)=A∥∥BAB=x12+y12 ×x22+y22 (x1,y1)(x2,y2)=x12+y12 ×x22+y22 x1x2+y1y2

如果向量 a a a b b b不是二维而是 n n n维,上述余弦的计算法仍然正确。假定 A A A B B B是两个 n n n维向量, A A A [ A 1 , A 2 , … , A n ] \left\lbrack A_{1},A_{2},\ldots,A_{n} \right\rbrack [A1,A2,,An] B B B [ B 1 , B 2 , … , B n ] \left\lbrack B_{1},B_{2},\ldots,B_{n} \right\rbrack [B1,B2,,Bn],则 A A A B B B的夹角余弦等于:

cos ⁡ ( θ ) = A ⋅ B ∥ A ∥ ∥ B ∥ = ∑ i = 1 n A i × B i ∑ i = 1 n ( A i ) 2 × ∑ i = 1 n ( B i ) 2 \cos\left( \theta \right) = \frac{A \cdot B}{\parallel A \parallel \parallel B \parallel} = \frac{\sum_{i = 1}^{n}A_{i} \times B_{i}}{\sqrt{\sum_{i = 1}^{n}(A_{i})^{2}} \times \sqrt{\sum_{i = 1}^{n}(B_{i})^{2}}} cos(θ)=A∥∥BAB=i=1n(Ai)2 ×i=1n(Bi)2 i=1nAi×Bi

在这里插入图片描述

代码实现:

from math import *def square_rooted(x):return round(sqrt(sum([a*a for a in x])),3)
def cosine_similarity(x, y):numerator = sum(a * b for a, b in zip(x, y))denominator = square_rooted(x) * square_rooted(y)return round(numerator / float(denominator), 3)
print(cosine_similarity([3, 45, 7, 2], [2, 54, 13, 15]))
cosSm_ = lambda p1, p2:\np.sum(p1 * p2)\/ (np.sqrt(np.sum(p1**2))\* np.sqrt(np.sum(p2**2)))
def cosSm(p1, p2):return  npl.norm(p1 - p2, ord=2)\/ (npl.norm(p1, ord=2) * npl.norm(p2, ord=2))

参考

  1. 黄海广老师的机器学习教程
  2. 【Numpy】常见范数的数学定义与 Numpy 实现
  • 注意⚠️: 本文由vscode的’copilot AI`协助完成, 谨慎使用
    在这里插入图片描述

未完待续…

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用“反向代理服务器”的优点是什么?

反向代理服务器是一种网络架构模式&#xff0c;通常位于客户端和实际服务器之间&#xff0c;用于处理客户端请求并转发到实际服务器。以下是使用反向代理服务器的优点&#xff1a; 1.安全性&#xff1a;反向代理服务器可以提供额外的安全层。通过在反向代理服务器上配置防火墙和…

opencv006 绘制直线、矩形、⚪、椭圆

绘制图形是opencv经常使用的操作之一&#xff0c;库中提供了很多有用的接口&#xff0c;今天来学习一下吧&#xff01; &#xff08;里面的函数和参数还是有点繁琐的&#xff09; 最终结果显示 函数介绍 直线 line(img, pt1, pt2, color, thickness, lineType, shift) img: 在…

GO语言笔记1-变量与基本数据类型

变量使用步骤 声明赋值使用 package main import "fmt" func main(){var age int //声明一个 int类型的变量叫ageage 18 //给变量用 赋值fmt.Println(age) //使用变量 输出变量的值 } 编译运行输出变量值 变量的四种使用方式 package main import "fmt&q…

nginx配置图片服务器

目录 一&#xff1a;访问流程 二&#xff1a;缓存服务器配置 三&#xff1a;上传图片直接上传到图片服务器 四&#xff1a;加快图片访问 一&#xff1a;访问流程 访问缓存服务器(上面安装nginx反向代理到图片服务器&#xff0c;对外提供服务)->图片服务器 二&#xff1…

Ajax基础入门_Ajax概述,同步与异步,Axios的使用,JSON数据及FastJSON的使用

Ajax 文章目录 Ajax1 概述2 作用3 同步和异步3.1 同步3.2 异步 4 代码编写4.1 服务端4.2 客户端 5 Axios5.1 使用5.2 代码5.2.1 前端5.2.2 后端 5.3 请求方法别名 6 JSON6.1 概述6.2 JSON 基础语法6.2.1 定义格式6.2.2 js 对象与JSON的转换 6.3 发送异步请求携带参数6.4 JSON串…

[PyTorch][chapter 9][李宏毅深度学习][CNN]

前言&#xff1a; 卷积神经网络&#xff08;Convolutional Neural Networks&#xff09;是一种深度学习模型或类似于人工神经网络的多层感知器&#xff0c;常用来分析视觉图像。卷积神经网络的创始人是着名的计算机科学家Yann LeCun&#xff0c;目前在Facebook工作&#xff0c;…

WSL 与真实 linux 环境区别有多大?

随着 Windows 系统的不断发展和完善&#xff0c;WSL&#xff08;Windows Subsystem for Linux&#xff09;作为 Windows 10 的一个功能&#xff0c;为 Windows 用户提供了一个可以在 Windows 环境下运行 Linux 二进制可执行文件的环境。然而&#xff0c;尽管 WSL 为用户提供了一…

BERT(从理论到实践): Bidirectional Encoder Representations from Transformers【3】

这是本系列文章中的第3弹,请确保你已经读过并了解之前文章所讲的内容,因为对于已经解释过的概念或API,本文不会再赘述。 本文要利用BERT实现一个“垃圾邮件分类”的任务,这也是NLP中一个很常见的任务:Text Classification。我们的实验环境仍然是Python3+Tensorflow/Keras…

python打包exe

打包python绘制玫瑰花_python生成玫瑰花-CSDN博客 这个链接的程序 隐藏 控制台窗口&#xff08;如果你的程序是GUI&#xff0c;不是控制台应用可以选用&#xff0c;比如本案例的送你玫瑰花就是白底的&#xff09; 报错的话&#xff0c;可能没有pyinstaller这个库 参考&#x…

动手学深度学习一:环境安装与数据学习

2024&#xff0c;重新开始深度学习。 第一步&#xff1a;李沐动手学深度学习 课程网址&#xff1a;https://courses.d2l.ai/zh-v2/ 包含教材和视频网址链接 Jupyter notebook安装 目前在本地先使用cpu版本pytorch&#xff0c;我的本地已经安装好conda&#xff0c;跟着教材创建…

Android中的Intent

一.显式Intent 显示Intent是明确目标Activity的类名 1. 通过Intent(Context packageContext, Class<?> cls)构造方法 2.通过Intent的setComponent()方法 3.通过Intent的setClass/setClassName方法 通过Intent(Context packageContext, Class<?> cls)构造方法 通…

买工业用品就找震坤行,提供震坤行商品数据,数据分析的API接口

要接入API接口以采集电商平台上的商品数据&#xff0c;可以按照以下步骤进行&#xff1a; 1、找到可用的API接口&#xff1a;首先&#xff0c;需要找到支持查询商品信息的API接口。这些信息通常可以在电商平台的官方文档或开发者门户网站上找到。 2、注册并获取API密钥&#x…

【普中开发板】基于51单片机的篮球计分器液晶LCD1602显示( proteus仿真+程序+设计报告+讲解视频)

基于普中开发板51单片机的篮球计分器液晶LCD1602显示 1.主要功能&#xff1a;讲解视频&#xff1a;2.仿真3. 程序代码4. 设计报告5. 设计资料内容清单&&下载链接资料下载链接&#xff08;可点击&#xff09;&#xff1a; 基于51单片机的篮球计分器液晶LCD1602显示 ( pr…

信息论与编码期末复习——概念论述简答题(一)

个人名片&#xff1a; &#x1f981;作者简介&#xff1a;一名喜欢分享和记录学习的在校大学生 &#x1f42f;个人主页&#xff1a;妄北y &#x1f427;个人QQ&#xff1a;2061314755 &#x1f43b;个人邮箱&#xff1a;2061314755qq.com &#x1f989;个人WeChat&#xff1a;V…

hyperf console 执行

一、原理描述 hyperf中&#xff0c;不难发现比如自定义控制器中获取参数&#xff0c;hyperf.php中容器获取&#xff0c;传入的都是接口&#xff0c;而不是实体类。 这是因为框架中的配置文件有设置对应抽象类的子类&#xff0c;框架加载的时候将其作为数组&#xff0c;使用的…

读算法霸权笔记11_微目标

1. 脸书 1.1. 一份请愿书属于脸书了&#xff0c;而社交网络的算法会对如何最大限度地利用这份请愿书做出判断 1.1.1. 脸书的算法在决定谁能看到我的请愿书时会把所有因素都考虑在内 1.2. 通过改变信息推送的方式&#xff0c;脸书研究了我们…

ssm基于Web的汽车客运订票系统的设计与实现论文

毕业设计&#xff08;论文&#xff09; 汽车客运订票系统 姓 名 ______________________ 学 号 ______________________ 班 级 ______________________ 专 业 ______________________ 院 部 ______________________ 指导教师 ______________________ 年 月 日 目 录 目 录 …

[排序算法] 如何解决快速排序特殊情况效率低的问题------三路划分

前言 在[C/C]排序算法 快速排序 (递归与非递归)一文中,对于快速排序的单趟排序一共讲了三种方法: hoare、挖坑法、双指针法 ,这三种方法实现的快速排序虽然在一般情况下效率很高,但是如果待排序数据存在大量重复数据,那这几种方法的效率就很低,而为了解决快速排序在这样特殊情况…

Python打印Python环境、PyTorch和CUDA版本、GPU数量名称等信息

代码&#xff1a; import torch import platformgpu_num torch.cuda.device_count() torch_version torch.__version__ python_version platform.python_version()print("Python Version: Python %s" % python_version) print("PyTorch Version: %s" %…

嵌入式MCU:如何安装codeWarrior 和Jlink

先安装codeWarrior 15.0版本&#xff0c;这个官网上没有这个版本要去blazar的这个网站上下载&#xff1a; Blazar-α系统电路图纸&#xff08;MOOC课程对应&#xff09;&#xff08;Updating&#xff09;-Blazar开源硬件与MOOC codeWarrior 安装不要安装在中文路径里面 安装完…