mxnet各种归一化:batch norm, l2 norm和mxnet.nd.L2Normalization

本文介绍了MXNet库中的几种归一化方法,包括mx.nd.BatchNorm,它在样本批次中进行均值和方差归一化,以及mx.nd.L2Normalization,用于将向量标准化为长度为1的单位向量。此外,还提到了mx.nd.norm函数计算L2范数,并讨论了如何利用这些归一化技术来计算欧氏距离。
摘要由CSDN通过智能技术生成

mx.nd.BatchNorm 类似于在一个batch里面对样本减均值、除方差。
mx.nd.L2Normalization 对向量进行归一化:每一行向量中的每个元素除以向量的模长。变成长度为1、带有方向的单位向量。
mx.nd.norm 用于沿指定axis求范数,默认求整个矩阵的L2范数,变成一个值(标量)。(L2范数)对应欧式距离。
nd.L2Normalization(a,mode=‘instance’)

# nd.L2Normalization(a,mode='instance') 是对每个样本(向量,每一行)分别进行L2归一化,就是每一行向量中的每个元素除以向量的模长
a
Out[20]: 
[[1. 2.]
 [3. 4.]]
<NDArray 2x2 @cpu(0)>
nd.L2Normalization(a,mode='instance')
Out[21]: 
[[0.4472136 0.8944272]
 [0.6       0.8      ]]
<NDArray 2x2 @cpu(0)>
# 对于地一个样本:[1,2],就相当于
1/np.sqrt(1*1+2*2)
Out[22]: 0.4472135954999579
2/np.sqrt(1*1+2*2)
Out[23]: 0.8944271909999159
# 第二个样本依次类推



求两个向量差的L2范数,也就是求欧氏距离:

The input F is an mxnet.ndarry or an mxnet.symbol if we hybridize the network. Gluon’s Loss base class is in fact a HybridBlock. This means we can either run imperatively or symbolically. When we hybridize our custom loss function, we can get performance speedups.

F就当作是mxnet.nd吧,当然也可以是symbol,这就是hybridize的奥义??

margin=6
distances_squared = F.sum(F.square(distances), 1, keepdims=True)
euclidean_distances = F.sqrt(distances_squared + 0.0001)
d = F.clip(margin - euclidean_distances, 0, margin)
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值