softmax_loss的归一化问题
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一起看代码
最新文章
- 在Node.js使用mysql模块时遇到的坑
- [资料分享]SQL Server 2016/2014/2012/2008简体中文企业版下载+对应补丁
- NSOperation操作依赖和监听
- 在Windows上运行InfoPi
- Sass开发环境搭建
- Java学习笔记(十六)——Java RMI
- angular router-ui
- PHP模拟发送POST请求之二、用PHP和JS处理URL信息
- raspberry树莓派安装CUPS实现打印服务器共享HP P1007打印机
- kmp算法详解
- MMU和TLB
- Gradle 1.3之前的Publishing artifacts
- Linux内核中影响tcp三次握手的一些协议配置
- NEsper z
- Android 中延迟执行的小结
- runtime的概念,message send如果寻找不到相应的对象,如何进行后续处理
- AOP 面向方面的编程 Aspect Oriented Programing --第一次听说呢,汗!
- Codeforces Round #396 (Div. 2)
- 学习 day4 html 盒子模型
- c++中求数组长度
热门文章
- POJ - 3190 Stall Reservations 贪心+自定义优先级的优先队列(求含不重叠子序列的多个序列最小值问题)
- Qt测试代码执行时间
- Lightoj1011【KM算法】
- PJzhang:python基础入门的7个疗程-one
- B. Lecture Sleep( Educational Codeforces Round 41 (Rated for Div. 2))
- Jquery | 基础 | 事件的链式写法
- Python及bs4、lxml、numpy模块包的安装
- 最新Centos7安装python3并与python2共存
- __slots__,__doc__,__module__,__class__.__call__
- [WOJ3010] 骰子