专栏推荐正文

L1范式

就是将向量中所有元素的绝对值相加求和

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(1)

以上是对a、b、c三个向量求L1范式,都是8

L2范式

L2是所有元素平方和然后再开根号

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(2)

还可以在向量的指定维度求范式,需要知道的是,在向量的哪个维度取范式,那么求出来的范式的维度就是原始向量消掉所取维度后的向量维度。

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(3)

B的shape为(2,4)

对b在1维度上求范式,那么也就是b的维度为消掉原始b在1维度上的4,那么它的维度就是(2)

最大值man、最小值min、均值mean,累乘prod,求和sum,最大值索引argmax

求最小值索引argmin

如果argmax和argmin没有参数,那么它会求将一个向量拉伸开,也就是拉成dim=0之后求下标

如果要是想让向量不伸展开,那么我们可以再指定维度上求最大最小的索引

a. argmin(dim=0)这个表示再dim=0的维度上求最小值得索引

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(4)

如图所示,求dim=1维度上的最大值,因为a得维度为(4,5)所以求最大值之后dim为1了,keepdim=True的意思就是说要保持维度,如上所示求最大值之后的dim仍为2

取最大或者最小的几个值

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(5)

a.topk(2,dim=1)表示求a在dim=1维度上最大的两个值

b. topk(1,dim=1)表示求a在dim=1维度上最大的一个值

如果要是想要求最小的几个值可以

a.topk(2,dim=1,largest=False)

直接求第几个(从1开始)最小的值

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(6)

如果不keepdim,那么输出的维度为[4]

比较>,>=,<,<=,!=,==会对向量的每个元素进行判断比较

Torch.equal(a,b)等价于torch.equal(a,b)

会对a,b向量的每一个维度进行比较,相等则返回1,不等返回0

tensor的操作

x = torch.randn(4, 3,1)

print(x)

max_value, max_idx = torch.max(x, dim=2)#我们约定0为第一维度,1为第二维度,2为第三维度

#print(max_value)

sum_x = torch.sum(x, dim=2)

print(sum_x)

归并操作此类操作会使输出形状小于输入形状,并可以沿着某一维度进行指定操作

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(7)

以上大多数函数都有一个参数dim,用来指定这些操作是在哪个维度上执行的。关于dim(对应于Numpy中的axis)的解释众说纷纭,这里提供一个简单的记忆方式:

假设输入的形状是(m, n, k)

· 如果指定dim=0,输出的形状就是(1, n, k)或者(n, k)

· 如果指定dim=1,输出的形状就是(m, 1, k)或者(m, k)

· 如果指定dim=2,输出的形状就是(m, n, 1)或者(m, n)

size中是否有"1",取决于参数keepdim,keepdim=True会保留维度1。注意,以上只是经验总结,并非所有函数都符合这种形状变化方式,如cumsum。

逐元素比较操作

人工智能算法分哪两类(人工智能中常用的L1和L2范数是什么)(8)

· t.max(tensor):返回tensor中最大的一个数

· t.max(tensor,dim):指定维上最大的数,返回tensor和下标

· t.max(tensor1, tensor2): 比较两个tensor相比较大的元素

,