若
x
=
[
x
1
,
x
2
,
.
.
.
,
x
n
]
T
x\;=\;{\lbrack x_1,x_2,...,x_n\rbrack}^T
x=[x1,x2,...,xn]T,那么
∣
∣
x
∣
∣
p
=
(
(
∣
x
1
∣
)
p
+
(
∣
x
2
∣
)
p
+
(
∣
x
3
∣
)
p
+
.
.
.
(
∣
x
n
∣
)
2
)
1
p
||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
∣
∣
=
∣
x
1
∣
+
∣
x
2
∣
+
∣
x
3
∣
+
.
.
.
∣
x
n
∣
||x||=|x_1|+|x_2|+|x_3|+...|x_n|
∣∣x∣∣=∣x1∣+∣x2∣+∣x3∣+...∣xn∣
2-范数:
∣
∣
x
∣
∣
2
=
(
(
∣
x
1
∣
)
2
+
(
∣
x
2
∣
)
2
+
(
∣
x
3
∣
)
2
+
.
.
.
(
∣
x
n
∣
)
2
)
1
2
||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
∞-范数:
m
a
x
(
∣
x
1
∣
,
∣
x
2
∣
,
∣
x
3
∣
,
.
.
.
,
∣
x
n
∣
)
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))# out : tensor(8.) tensor(8.) tensor(8.)print(a.norm(2),b.norm(2),c.norm(2))# sqrt(8)# out : tensor(2.8284) tensor(2.8284) tensor(2.8284)# 第一个参数,给定p范数,第二个参数给定在哪个维度做范数print(b.norm(1,dim=1))# out : tensor([4., 4.])print(b.norm(2,dim=1))# out : tensor([2., 2.])print(b.norm(2,dim=0))# out : tensor([1.4142, 1.4142, 1.4142, 1.4142])print(c.norm(2,dim=0))# tensor([[1.4142, 1.4142],# [1.4142, 1.4142]])print(c.norm(2,dim=1))# tensor([[1.4142, 1.4142],# [1.4142, 1.4142]])
二、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、代码实例
# max and so on
a = torch.arange(8).view(2,4).float()print(a)# tensor([[0., 1., 2., 3.],# [4., 5., 6., 7.]])print(a.min(),a.max(),a.mean(),a.prod())# prod是累乘# tensor(0.) tensor(7.) tensor(3.5000) tensor(0.)print(a.sum())# tensor(28.)print(a.argmax(),a.argmin())# 打平后求max的位置# tensor(7) tensor(0)print(a.argmax(dim=0),a.argmax(dim=1))# 求出对应dim上的argmax# tensor([1, 1, 1, 1]) tensor([3, 3])# dim and keepdim
a = torch.rand(4,10)print(a.max(dim=1))# 参数中带有dim,则输出max and argmax# torch.return_types.max(# values=tensor([0.9732, 0.9010, 0.9807, 0.9098]),# indices=tensor([7, 1, 6, 2]))print(a.argmax(dim=1))# tensor([4])# tensor([7, 1, 6, 2])# 若keepdim = false 返回的dim消去1; keepdim = true,返回的dim不变print(a.max(dim=1,keepdim=True))# tensor([4,1])# values=tensor([[0.9732],# [0.9010],# [0.9807],# [0.9098]]),#indices=tensor([[7],# [1],# [6],# [2]]))