目录

forward_cpu_gemm

forward_cpu_bias

backward_cpu_bias

weight_cpu_gemm

backward_cpu_gemm

其余函数参考链接


forward_cpu_gemm

output = weights * input

weight: N x K   input: K x M   output: N x M

template <typename Dtype>
void BaseConvolutionLayer<Dtype>::forward_cpu_gemm(const Dtype* input,const Dtype* weights, Dtype* output, bool skip_im2col) {const Dtype* col_buff = input;if (!is_1x1_) {if (!skip_im2col) {conv_im2col_cpu(input, col_buffer_.mutable_cpu_data());}col_buff = col_buffer_.cpu_data();}for (int g = 0; g < group_; ++g) {caffe_cpu_gemm<Dtype>(CblasNoTrans, CblasNoTrans, conv_out_channels_ /group_, conv_out_spatial_dim_, kernel_dim_ / group_,(Dtype)1., weights + weight_offset_ * g, col_buff + col_offset_ * g,(Dtype)0., output + output_offset_ * g);}
}

forward_cpu_bias

output = bias * bias_multiplier_

bias:N x 1

bias_multiplier_:1 x M的单位向量

template <typename Dtype>
void BaseConvolutionLayer<Dtype>::forward_cpu_bias(Dtype* output,const Dtype* bias) {caffe_cpu_gemm<Dtype>(CblasNoTrans, CblasNoTrans, num_output_,height_out_ * width_out_, 1, (Dtype)1., bias, bias_multiplier_.cpu_data(),(Dtype)1., output);
}

backward_cpu_bias

template <typename Dtype>
void BaseConvolutionLayer<Dtype>::backward_cpu_bias(Dtype* bias,const Dtype* input) {caffe_cpu_gemv<Dtype>(CblasNoTrans, num_output_, height_out_ * width_out_, 1.,input, bias_multiplier_.cpu_data(), 1., bias);
} 计算关于bias的导数

weight_cpu_gemm

template <typename Dtype>
void BaseConvolutionLayer<Dtype>::weight_cpu_gemm(const Dtype* input,const Dtype* output, Dtype* weights) {const Dtype* col_buff = input;if (!is_1x1_) {conv_im2col_cpu(input, col_buffer_.mutable_cpu_data());col_buff = col_buffer_.cpu_data();}for (int g = 0; g < group_; ++g) {caffe_cpu_gemm<Dtype>(CblasNoTrans, CblasTrans, conv_out_channels_ / group_,kernel_dim_ / group_, conv_out_spatial_dim_,(Dtype)1., output + output_offset_ * g, col_buff + col_offset_ * g,(Dtype)1., weights + weight_offset_ * g);}
}//计算关于weight的导数用于更新。

backward_cpu_gemm

template <typename Dtype>
void BaseConvolutionLayer<Dtype>::backward_cpu_gemm(const Dtype* output,const Dtype* weights, Dtype* input) {Dtype* col_buff = col_buffer_.mutable_cpu_data();if (is_1x1_) {col_buff = input;}for (int g = 0; g < group_; ++g) {caffe_cpu_gemm<Dtype>(CblasTrans, CblasNoTrans, kernel_dim_ / group_,conv_out_spatial_dim_, conv_out_channels_ / group_,(Dtype)1., weights + weight_offset_ * g, output + output_offset_ * g,(Dtype)0., col_buff + col_offset_ * g);}if (!is_1x1_) {conv_col2im_cpu(col_buff, input);}计算关于bottom data的导数以便传给下一层

其余函数参考链接

Caffe源码解析—核函数相关推荐

  1. 深度学习框架Caffe源码解析

    作者:薛云峰(https://github.com/HolidayXue),主要从事视频图像算法的研究, 本文来源微信公众号:深度学习大讲堂.  原文:深度学习框架Caffe源码解析  欢迎技术投稿. ...

  2. Caffe源码解析5:Conv_Layer

    转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ Vision_layer里面主要是包括了一些关于一些视觉上的操 ...

  3. caffe源码解析—image_data_layer层

    caffe data layer相关层的继承结构 image-data-layer层关键代码注释 DataLayerSetUp函数 //将imagelist中的图片以 image+label格式 读入 ...

  4. Caffe源码解析4: Data_layer

    转载请注明出处,楼燚(yì)航的blog,http://home.cnblogs.com/louyihang-loves-baiyan/ data_layer应该是网络的最底层,主要是将数据送给blo ...

  5. Caffe源码解析2:SycedMem

    from:https://www.cnblogs.com/louyihang-loves-baiyan/p/5150554.html 转载请注明出处,楼燚(yì)航的blog,http://www.c ...

  6. Caffe源码解析1:Blob

    from:https://www.cnblogs.com/louyihang-loves-baiyan/p/5149628.html 转载请注明出处,楼燚(yì)航的blog,http://www.c ...

  7. Caffe源码解析(一) —— caffe.proto

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 caffe.proto是caffe数据结构定义的主要文件,本文主要是在caffe.proto代码的基础上加上了部分 ...

  8. 零基础学caffe源码 ReLU激活函数

    零基础学caffe源码 ReLU激活函数 原创 2016年08月03日 17:30:19 1.如何有效阅读caffe源码 1.caffe源码阅读路线最好是从src/cafffe/proto/caffe ...

  9. win版本caffe源码libcaffe研究

    版权声明:本文为博主在研究工作中经验分享,包括研究成果,欢迎交流和批评:其中参考资料的标注难免会有疏漏之处,如有请告知,立马更正,谢谢:未经博主允许不得转载. [cpp]  view plain co ...

最新文章

  1. Nature:依靠锰的氧化实现细菌的化能自养生长
  2. python set 排序_python set 排序_如何在Python中使用sorted()和sort()
  3. 怎样在html中实现图层重叠,javascript – 在HTML5画布中实现图层
  4. OC extern和变量
  5. uni-app 实现微信授权登录
  6. python3多线程第三方库_Python3标准库:concurrent.futures管理并发任务池
  7. Eclipse的Spring库导入
  8. 恶意软件利用Windows故障诊断平台传播
  9. 远程出发jenkins jobs
  10. 【react】 react 中 前后端数据的交互方式 (原生的ajax、jq的ajax、axios、fetch )...
  11. 【滤波器】基于matlab低通滤波器(LPF)设计【含Matlab源码 323期】
  12. 计算机课代表中段考总结,中段考试总结与反思
  13. php获取真实图片后缀
  14. 自适应网页(响应式布局)+弹性布局
  15. Excel中数字、数值和文本的区别
  16. SqueezeNet: Alexnet-level accuracy whith 50x Fewer Parameters And 0.5MB Model Size
  17. 十八、绘制游戏背景图片
  18. 浅谈MYSQL增量备份
  19. java调用CMD完成文件复制
  20. ae导出gif插件_GifGun v1.7.5 一键快速让AE导出输出GIF动态图脚本

热门文章

  1. Java 接口和抽象类可以被new么?
  2. 浅谈 温故知新——HTML5!
  3. typedef 与 define
  4. 牛客网(剑指offer) 第三题 输入一个链表,从尾到头打印链表每个节点的值。
  5. C# 系统应用之TreeView控件 (一).显示树状磁盘文件目录及加载图标
  6. iOS之深入解析objc_msgSend消息转发机制的底层原理
  7. 【数据结构与算法】之深入解析“两数之和”的求解思路与算法示例
  8. HarmonyOS之常用布局TableLayout的使用
  9. LeetCode Algorithm 面试题 16.10. 生存人数
  10. TUST 数据库原理 试卷(A)