Caffe 源碼閱讀(三) caffe.cpp
补:主要函数运行顺序: main>>GetBrewFunction>>train>>Solve
從main函數說起:
1、gflags庫中爲main函數設置usage信息 是google的一個開源的處理命令行的參數的庫。在使用命令行參數的文件夾文件中(源文件或頭文件),首先使用以下定義語句進行變量的定義。 DEFINE_int32, DEFINE_int64, DEFINE_bool等, 語法爲:DEFINE_int32(name,default_value,"description")。接着你就可以使用FLAGS_name變量了,這些變量的值則是由命令行參數傳遞,無則爲默認值,在其他代碼文件中若想使用該命令參數,可以用DECLARE_int32(name)聲明(name爲int32類型,也可以使用其它支持類型)
2、main函數中,出現了GetBrewFunction函數,在標準指令下,main函數將執行GetBrewFunction函數。
在caffe.cpp中定義了一些BrewFunction類的函數,通过RegisterBrewFunction(function)注册进容器g_brew_map:
int device_query(): 用来查询GPU信息
int train(): 训练神经网络
int time(): 测试model执行时间
GetBrewFunction函数通过caffe命令后第一个参数在g_brew_map容器中查找对应函数指针并返回,简单来说就是决定之后的操作是Train or Test。
3、train函数
-----------------------------------------------------------------------------------
检查 --solver --snapshot --weight 并输出消息 利用glog庫输出
-----------------------------------------------------------------------------------
实例化 SolverParameter 类,该类保存solver参数和相对应的方法 将-solver指定的solver.prototxt文件内容解析到solver_param中,该函数声明在include/caffe/util/upgrade_proto.hpp中,是现在src/caffe/util/upgrade_proto.cpp中
-----------------------------------------------------------------------------------
处理snapshot,stop or none 信号,其声明在include/caffe/util/signal_Handler.h中
GetRequestedAction在caffe.cpp中,将‘stop’,'snapshot','none'转换为标准信号,即解析:
caffe::SignalHandler singal_handler(GetRequestedAction(FLAGS_sigint_effect),GetRequestedAction(FLAGS_sighup_effect));
-----------------------------------------------------------------------------------
从snapshot或caffemodel中恢复train:
solver->Restore
-----------------------------------------------------------------------------------
开始优化
solver->Solve();
优化完成
Caffe 源碼閱讀(三) caffe.cpp的更多相关文章
- Caffe 源碼閱讀(五) Solver.cpp
1.Solver类两个构造函数 Solver(const SolverParameter& param) Solver(const string& param_file) 初始化两个类 ...
- Caffe 源碼閱讀(六) data_layer.cpp
>>>>>>>>>>>>>>>>>>>>>>>>> ...
- Caffe 源碼閱讀(四) Layer.hpp Layer.cpp
1.Setup() Layer初始化参数 (1.完成层参数的读入.处理 2.设置底层顶层的shape,在前向传播前完成) InitMutex CheckBolbCounts: LayerSetup:d ...
- Caffe 源碼閱讀(六) InternalThread
类InternalThread是一个虚类,是Caffe中的多线程接口,其本质是为封装了boost::thread 看源码可以得到以下结论: 1.每个派生类都需要实现一个InternalThreadEn ...
- Caffe 源碼閱讀(一) Blob.hpp
Blob 四維度(N K H W) N : SGD 一次 mini-batch 個數 K : 如果是圖片表示圖片通道數 如果是中間結果 則理解爲 feature map 個數 H.W : 如果是圖片理 ...
- Caffe 源碼閱讀(二) SyncedMemory.hpp
1. to_cpu 數據由現存同步到內存 2. to_gpu 數據由內存同步到顯存 3. cpu_str_ 內存指針 4. gpu_str_ 顯存指針 5. size_ 數據大小 6. own_cpu ...
- caffe源码阅读(一)convert_imageset.cpp注释
PS:本系列为本人初步学习caffe所记,由于理解尚浅,其中多有不足之处和错误之处,有待改正. 一.实现方法 首先,将文件名与它对应的标签用 std::pair 存储起来,其中first存储文件名,s ...
- Caffe源码阅读(1) 全连接层
Caffe源码阅读(1) 全连接层 发表于 2014-09-15 | 今天看全连接层的实现.主要看的是https://github.com/BVLC/caffe/blob/master/src ...
- caffe源码学习
本文转载自:https://buptldy.github.io/2016/10/09/2016-10-09-Caffe_Code/ Caffe简介 Caffe作为一个优秀的深度学习框架网上已经有很多内 ...
随机推荐
- javascript 面向对象(转)
1.使用[]调用对象的属性和方法 function User() { this.age = 21; this.sex = "男?"; } var user = new User() ...
- 。【自学总结 2】------3ds Max 菜单
一.File〈文件菜单:主要用于打开.存储和打印文件,可以将文件导入和导出为不同的其他三维存档格式.〉 New〈新建〉 Reset〈重置〉 Open〈打开〉 Save〈保存〉 Save As〈保存为〉 ...
- 【Unity3D游戏开发】之利用语法糖添加自定义拓展方法(下) (十八)
首先需要声明的是“语法糖”这个词绝非贬义词,它可以给我带来方便,是一种便捷的写法,编译器会帮我们做转换:而且可以提高开发编码的效率,在性能上也不会带来损失.这让java开发人员羡慕不已,呵呵. 1. ...
- CentOS的网络配置(终端环境)
在虚拟机中安装了Server版的CentOS,用于做Hadoop相关的实验.Server版的CentOS默认是没有桌面环境的,eth0的网络默认也没有开启,需要我们手动启动网络. 关键配置说明 网络和 ...
- 【树莓派】基于TinyProxy搭建HTTP代理服务器
一.前言 关于为什么要玩玩HTTP代理就不用我多说了. 二.搭建环境 * Linux laptop 2.6.32-45-generic #100-Ubuntu SMP Wed Nov 14 10:4 ...
- cubic-bezier贝塞尔曲线css3动画工具
今天在一本叫<HTML5触摸界面设计与开发>上看到一个做弹跳球的复杂动画效果,首先加速下降,停止,然后弹起时逐渐减速.是用cubic-bezier贝塞尔曲线来完成的.所以特地去学习了一下关 ...
- java高薪之路__007_反射
参考地址: 1. http://www.cnblogs.com/rollenholt/archive/2011/09/02/2163758.html2. http://www.cnblogs.com/ ...
- GC overhead limit exceeded填坑心得
我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...
- BLAST - 序列数据库搜索
我生信入门,老师就要求我学好blast比对,说得也确实是很有道理,是个人都知道比对是最基本的东西,现在再想想那老师的建议,也只能呵呵一笑. 北大生物信息公开课有一章专门讲得序列数据库搜索,可以好好看看 ...
- Windows 10:解决开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用的方法
开机显示C:\WINDOWS\system32\config\systemprofile\Desktop不可用应该是不少网友都遇到过. 近日在使用Windows 10 Build 9926中,也出 ...