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

举报
风吹稻花香 发表于 2021/06/05 00:17:51 2021/06/05
【摘要】 mx.nd.BatchNorm 类似于在一个batch里面对样本减均值、除方差。 mx.nd.L2Normalization 对向量进行归一化:每一行向量中的每个元素除以向量的模长。变成长度为1、带有方向的单位向量。 mx.nd.norm 用于沿指定axis求范数,默认求整个矩阵的L2范数,变成一个值(标量)。(L2范数)对应欧式距离。 nd.L2Normalization(...

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


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



求两个向量差的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)
 

文章来源: blog.csdn.net,作者:网奇,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jacke121/article/details/116739248

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。