L1范式
就是将向量中所有元素的绝对值相加求和
以上是对a、b、c三个向量求L1范式,都是8
L2范式
L2是所有元素平方和然后再开根号
还可以在向量的指定维度求范式,需要知道的是,在向量的哪个维度取范式,那么求出来的范式的维度就是原始向量消掉所取维度后的向量维度。
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的维度上求最小值得索引
如图所示,求dim=1维度上的最大值,因为a得维度为(4,5)所以求最大值之后dim为1了,keepdim=True的意思就是说要保持维度,如上所示求最大值之后的dim仍为2
取最大或者最小的几个值
a.topk(2,dim=1)表示求a在dim=1维度上最大的两个值
b. topk(1,dim=1)表示求a在dim=1维度上最大的一个值
如果要是想要求最小的几个值可以
a.topk(2,dim=1,largest=False)
直接求第几个(从1开始)最小的值
如果不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)
归并操作此类操作会使输出形状小于输入形状,并可以沿着某一维度进行指定操作
以上大多数函数都有一个参数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。
逐元素比较操作
· t.max(tensor):返回tensor中最大的一个数
· t.max(tensor,dim):指定维上最大的数,返回tensor和下标
· t.max(tensor1, tensor2): 比较两个tensor相比较大的元素
,