MultinomialLogisticLossLayer
对数损失函数: L = -log(P(Y|X))

softmax 的损失函数如下:

在处理分类问题的时候,当前一层输出了每一类的概率,那么则可以利用 MultinomialLogisticLossLayer 来计算 loss。
1. forward()
template <typename Dtype>
void MultinomialLogisticLossLayer<Dtype>::Forward_cpu(
...Dtype loss = 0;for (int i = 0; i < num; ++i) {int label = static_cast<int>(bottom_label[i]);Dtype prob = std::max(bottom_data[i * dim + label], Dtype(kLOG_THRESHOLD)); //kLOG_THRESHOLD = 1e-20;loss -= log(prob);  // 累加}top[0]->mutable_cpu_data()[0] = loss / num;  // 再求平均
}
2. backward()
template <typename Dtype>
void MultinomialLogisticLossLayer<Dtype>::Backward_cpu(const vector<Blob<Dtype>*>& top, const vector<bool>& propagate_down,const vector<Blob<Dtype>*>& bottom) {
...caffe_set(bottom[0]->count(), Dtype(0), bottom_diff);  //除了 label 对应的bottom 项,其余bottom_diff 为 0  const Dtype scale = - top[0]->cpu_diff()[0] / num; // 此处top_diff = loss weight = 1, 则scale = -1/Nfor (int i = 0; i < num; ++i) {int label = static_cast<int>(bottom_label[i]);Dtype prob = std::max(bottom_data[i * dim + label], Dtype(kLOG_THRESHOLD));bottom_diff[i * dim + label] = scale / prob;
} } }
假设输入为a, 输出为 z. 前向和后向公式分别如下:
其中 有N个样本,K个类别。

学习笔记: 源码 multinomial_logistic_loss_layer.cpp 略晓相关推荐

  1. 一箭双雕 刷完阿里P8架构师spring学习笔记+源码剖析,涨薪8K

    关于Spring的叙述: 我之前死磕spring的时候,刷各种资料看的我是一头雾水的,后面从阿里的P8架构师那里拿到这两份资料,从源码到案例详细的讲述了spring的各个细节,是我学Spring的启蒙 ...

  2. MyBatis学习笔记-源码分析篇

    引言 SQL 语句的执行涉及多个组件,其中比较重要的是 Executor. StatementHandler. ParameterHandler 和 ResultSetHandler. Executo ...

  3. mysql数据库源码安装_学习笔记-源码安装mariadb 20210128

    源码安装Mariadb数据库 安装之前先检查一下空间: 1 [15:13:16 root@centos8 ~]#free -h(#检查空间)2 total used free shared buff/ ...

  4. 小姐姐笔记:我是如何学习简单源码拓展视野的

    大家好,我是若川.这是我上周组织的源码共读纪年小姐姐的笔记,写得很好.所以分享给大家.欢迎加我微信 ruochuan12,进源码共读群.其他更多人的笔记可以阅读原文查看. 川哥的源码解读文章:据说 9 ...

  5. React深入学习与源码解析笔记

    ***当前阶段的笔记 *** 「面向实习生阶段」https://www.aliyundrive.com/s/VTME123M4T9 提取码: 8s6v 点击链接保存,或者复制本段内容,打开「阿里云盘」 ...

  6. 免费学习机器学习和深度学习的源码、学习笔记和框架分享

    机器学习和深度学习的免费学习源码.学习笔记和框架分享 python笔记 源码 python导入模块的的几种方式 在python中,字典按值排序 python中set的基本常用方法 python取出fr ...

  7. java计算机毕业设计中国古诗词学习平台源码+mysql数据库+系统+部署+lw文档

    java计算机毕业设计中国古诗词学习平台源码+mysql数据库+系统+部署+lw文档 java计算机毕业设计中国古诗词学习平台源码+mysql数据库+系统+部署+lw文档 本源码技术栈: 项目架构:B ...

  8. 小白学习pytorch源码(二):setup.py最详细解读

    小白学习pytorch源码(二) pytorch setup.py最全解析 setup.py与setuptools setup.py最详细解读 setup.py 环境检查 setup.py setup ...

  9. 我该如何学习spring源码以及解析bean定义的注册

    如何学习spring源码 前言 本文属于spring源码解析的系列文章之一,文章主要是介绍如何学习spring的源码,希望能够最大限度的帮助到有需要的人.文章总体难度不大,但比较繁重,学习时一定要耐住 ...

最新文章

  1. STM32 的加密实现(转)
  2. 【图像超分辨率】Deep Learning for Multiple-Image Super-Resolution
  3. C++泛型编程实现哈希表(开散列法)
  4. MIPI屏数据发送命令解析
  5. 移动端点击拉起输入_没广告、无捆绑、真清流!讯飞输入法PC版评测:跨屏语音动口不动手...
  6. 关于产品与数据该如何结合的一点想法(一)
  7. PHP 5 将于年底停止更新,六成用户将面临安全风险
  8. 项目Alpha冲刺(6/10)
  9. Scala学习05——Scala集合
  10. Steve Yegge -Execution in the Kingdom of Nouns
  11. 教大家一个快速批量去水印下载快手视频、图集的方法技巧
  12. c语言程序设计会出现什么问题,计算机C语言程序设计过程中的常见问题分析和研究...
  13. 通过2048学习自定义view(二) 滑动事件监听 与 事件回调
  14. 松弛型内存模型(Relaxed memory models)的一个有趣的例子
  15. 最好的5个电脑上的epub阅读器
  16. Java实现多线程远程投屏并打包可执行文件(从代码到.exe)
  17. 程序猿的自救 从零备考NSCA/CSCS 1 身体系统的构造与系统
  18. linux下构建Smokeping网络监控平台
  19. 华厦眼科上市:募资31亿市值393亿 挂靠厦门大学
  20. 如何干净地卸载VMware

热门文章

  1. pymysql和sqlalchemy
  2. html5-css样式
  3. 【Linux】进程虚拟地址空间
  4. 数字电路基础知识——组合逻辑电路实现一些简单逻辑电路 (一)(用Verilog实现:绝对值函数运算(补码问题),取对数函数(移位寄存器),取整函数)
  5. Windows 10 本地硬盘变成了可弹出磁盘
  6. Z600服务器是阵列硬盘,hp z600 工作站 sata硬盘ahci配置raid方法
  7. K-means聚类算法及改进策略
  8. 北京第三家面试录音总结
  9. arduino智能闹钟_智能闹钟的制作图解
  10. 后台管理happymmail总结