码迷,mamicode.com
首页 > 其他好文 > 详细

softmax_loss的归一化问题

时间:2018-03-01 17:06:50      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:size   orm   als   batch   模式   oss   ati   技术   softmax   

cnn网络中,网络更新一次参数是根据loss反向传播来,这个loss是一个batch_size的图像前向传播得到的loss和除以batch_size大小得到的平均loss。

技术分享图片

softmax_loss前向传播中有这样一段代码:    loss/get_normalizer(normalization_,valid_count),这就是对loss进行归一化。

如果我有ignore_label,valid_cout就不为-1,没有就为-1。我的prototxt里面是没有的,所以最后我使用的normalizer是outer_num_ * inner_num_的形式。

实际上就是如果有ignore_label就归一化的所有的valid的,如果没有就是归一化batch×w×h

get_normalizer的定义在hpp中,实现在cpp文件中。

技术分享图片

normalization_mode传入的是normalization_,normalization_的定义在hpp,赋值实现在cpp的layer_setup里,如下图。观察我的softmax_loss没有添加loss_param,所以就是默认的valid模式。

技术分享图片

normalization_的赋值来自于layer的loss参数,如下图所示。这里有normalization和normalize两个参数,默认的normalization是valid类型,normalize是bool型无默认值。从上面一个图和下一个图的解释可以看出,没有normalization的情况,normalize为true就是valid,为false就是batch_size,其他情况都是由normalization来决定。也就是说normalize既可以不存在,也可以存在为true,存在为false。

技术分享图片

 

 

 

注意结合.h、.cpp、.cu一起看代码

softmax_loss的归一化问题

标签:size   orm   als   batch   模式   oss   ati   技术   softmax   

原文地址:https://www.cnblogs.com/ymjyqsx/p/8488251.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!