caffe使用gdb单步调试及源码阅读
来源:互联网 发布:mmd各种动作数据百度云 编辑:程序博客网 时间:2024/05/16 02:18
转载地址:http://blog.csdn.net/dengbingfeng/article/details/51469051
版权声明:本文为博主原创文章,未经博主允许不得转载。
目录(?)[-]
- 一caffe单步调试
- 二Caffe入口函数
- 三初始化训练网络
- 四前向传播
- 五反向传播
本文主要是介绍我在阅读caffe过程中参考的顺序以及网站。
首先阅读caffe看了知乎上面的这篇文章 深度学习caffe的代码怎么读?参考的是Gein Chen大神的回答:
1.先让程序跑起来,看看结果,这样就会有直观的感受。
2.单步调试,跟着Caffe在网络里流动。
3.个性化定制Caffe。
4.理解并实现Backpropagation。
本文主要是进行了简单的单步调试,并跟着网络的结构看了网络的init() forward()以及backward()的过程。现在将我看的大概过程给大家分享。
一.caffe单步调试
1.config文件中将debug设置为1。
2.重新编译caffe。
3.使用gdb —arg 例如: gdb --args ./build/tools/caffe.bin train --solver=examples/mnist/lenet_solver.prototxt
4.在caffe.cpp(caffe的入口函数)中设置断点
5.gdb - r 让程序run起来
注:gdb不熟悉可以需先补充相关知识二.Caffe入口函数
1.caffe 入口函数参考:caffe.cpp 程序入口分析
这篇文章从caffe的main函数出发,介绍了caffe一步一步如何向下执行,同时这篇文章还科普了typedef、#define 宏定义等等基础知识,非常适合初学者阅读。
2.caffe 训练网络参考: (Caffe,LeNet)训练网络入口
这篇文章讲了如何将solver参数读入进去,solver如何创建、Solver::Solve()函数以及如何调用到sgdSolver()上以及Solver::Step()函数等等,非常适合看完上篇main函数之后,在接着看caffe.cpp中的train函数。
三.初始化训练网络
初始化训练网络的文章参考文章:初始化训练网络
这篇文章讲了如何将net的参数读入到网络,网络的整体结构、网络的数据层、卷积层、pooling层、全连接层 softmax等等的初始化,以及每一个层blob的结构是什么样进行了介绍。
关于测试网络的初始化也可以参考:测试网络的初始化
四、前向传播
前向传播的文章可以参考文章:(Caffe,LeNet)前向计算
这篇文章主要剖析Caffe中Net::Forward()函数,即前向计算过程。
这里主要说一下卷积层的实现,其他层的实现相对较简单。
卷几层的实现可以参考caffe作者贾杨清关于卷几层的说明:caffe卷几层是如何实现
说明了为何使用im2col的方法来实现卷积,虽然比较占内存。这里im2col的方法需要花时间去理解。
五、反向传播
反向传播的文章可以参考:caffe反向传导算法
这篇文章虽然只是以全连接层以及softmax层为例介绍了caffe反向传播是如何完成,这篇文章包含了公式推导以及那些实现是如何与公式完美结合。
个人建议是阅读反向传播之前将反向传播自己推导一遍,然后对着源代码看,这样对代码的理解会更加深刻与清晰。
0 0
- caffe使用gdb单步调试及源码阅读
- caffe使用gdb单步调试及源码阅读
- caffe使用gdb单步调试及源码阅读
- GDB 单步调试
- gdb单步调试
- GDB 单步调试
- GDB 单步调试
- GDB 单步调试
- gdb单步调试
- GDB 单步调试
- GDB 单步调试
- gdb单步调试
- GDB 单步调试
- gdb 单步调试
- 使用CLion单步调试Caffe
- Caffe 单步调试
- Caffe单步调试
- caffe单步调试
- 面试题
- Cef介绍及下载地址和官方网站
- Yii2 里使用Redis扩展
- Android培训实战教程之 Studio下JNI开发
- Scala学习参考资料
- caffe使用gdb单步调试及源码阅读
- Longest Increasing Subsequence
- Yii2 里使用Redis扩展
- 电路与Multisim 感觉自己画完的电路图超级乱怎么办?快用网络标号!
- Qt5:一个文本框输入字符,另一个文本框输出其大写格式
- Java设计模式—访问者模式
- 音频中常见的技术指标
- 51nod 1074 约瑟夫环V2
- 如何获取上传到sharepoint上的文件的信息,以及expand的使用