zoukankan      html  css  js  c++  java
  • 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();

    优化完成

  • 相关阅读:
    select/poll/epoll 对比
    I/O Mutiplexing poll 和 epoll
    Socket 编程IO Multiplexing
    ubuntu12.04 lts 安装gcc 4.8
    time since epoch
    ceph-RGW Jewel版新概念
    支持向量机(svm)
    MachineLearning之Logistic回归
    ML之回归
    ML之监督学习算法之分类算法一 ——— 决策树算法
  • 原文地址:https://www.cnblogs.com/Victory-walt/p/5585749.html
Copyright © 2011-2022 走看看