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

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)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值