一、p-范数
1、p-范数基本概念
- 若x = [x1,x2,...,xn]Tx\;=\;{\lbrack x_1,x_2,...,x_n\rbrack}^Tx=[x1,x2,...,xn]T,那么∣∣x∣∣p=((∣x1∣)p+(∣x2∣)p+(∣x3∣)p+...(∣xn∣)2)1p||x||_p=((|x_1|)^p+(|x_2|)^p+(|x_3|)^p+...(|x_n|)^2)^{\frac{1}{p}}∣∣x∣∣p=((∣x1∣)p+(∣x2∣)p+(∣x3∣)p+...(∣xn∣)2)p1
- 1-范数:∣∣x∣∣=∣x1∣+∣x2∣+∣x3∣+...∣xn∣||x||=|x_1|+|x_2|+|x_3|+...|x_n|∣∣x∣∣=∣x1∣+∣x2∣+∣x3∣+...∣xn∣
- 2-范数:∣∣x∣∣2=((∣x1∣)2+(∣x2∣)2+(∣x3∣)2+...(∣xn∣)2)12||x||_2=((|x_1|)^2+(|x_2|)^2+(|x_3|)^2+...(|x_n|)^2)^{\frac{1}{2}}∣∣x∣∣2=((∣x1∣)2+(∣x2∣)2+(∣x3∣)2+...(∣xn∣)2)21
- ∞-范数:max(∣x1∣,∣x2∣,∣x3∣,...,∣xn∣)max(|x_1|,|x_2|,|x_3|,...,|x_n|)max(∣x1∣,∣x2∣,∣x3∣,...,∣xn∣)
2、相关函数
a.norm(p,dim):第一个参数p:要求的第几范数,第二个参数dim:要在哪一维度求范数。
- 若dim不给出,则默认整体求范数
- 在哪一维度求范数,相当于将这一维度消去
3、代码实例
a = torch.full([8],1)
b = a.view(2,4)
c = a.view(2,2,2)
print(a.norm(1),b.norm(1),c.norm(1))
print(a.norm(2),b.norm(2),c.norm(2))
print(b.norm(1,dim=1))
print(b.norm(2,dim=1))
print(b.norm(2,dim=0))
print(c.norm(2,dim=0))
print(c.norm(2,dim=1))
二、max、min等函数
1、相关函数
a.min(dim):最小值,带有dim参数的话返回最值和其位置a.max(dim):最大值,带有dim参数的话返回最值和其位置a.mean():均值a.prod():累乘a.sum():累加a.argmax(dim):不带dim参数的话,是将tensor打平后求给出最值的位置。a.argmin(dim):不带dim参数的话,是将tensor打平后求给出最值的位置。keepdim参数:此参数是保持求出的结果的dim不发生变换,否则会使dim-1
2、代码实例
a = torch.arange(8).view(2,4).float()
print(a)
print(a.min(),a.max(),a.mean(),a.prod())
print(a.sum())
print(a.argmax(),a.argmin())
print(a.argmax(dim=0),a.argmax(dim=1))
a = torch.rand(4,10)
print(a.max(dim=1))
print(a.argmax(dim=1))
print(a.max(dim=1,keepdim=True))
三、前k大,第k小
1、相关函数
a.topk(k,dim,largest)
- 参数k:求前k大(小)
- 参数dim:在哪一维度求前k大(小)
- 参数largest:若不给出,则是求前k大,若largest=False,则是求前k小
- 参数返回values(值)和indices(位置)
a.kthvalue(k,dim)
- 参数k:求第k小的数
- 参数dim:在哪一维度求第k小
- 默认是求第k小(不可通过函数进行改变),但可通过对a整体取反变成逻辑上的第k大
- 参数返回values(值)和indices(位置)
2、代码实例
a = torch.rand(2,5)*10
print(a)
print(a.topk(3,dim=1))
print(a.topk(3,dim=1,largest=False))
print(a.kthvalue(2,dim=1))
print(a.kthvalue(2))
四、比较函数
1、相关函数
>、<、==、!=torch.eq(a,b):判断每个元素是否相等torch.equal(a,b):判断整个tensor是否一致
2、代码实例
print(a)
print(a > 0)
print(torch.gt(a,0))
print(torch.eq(a>0,torch.gt(a,0)))
print(torch.equal(a>0,torch.gt(a,0)))