[转]Caffe学习 caffe具体运行流程分析

step1:命令行下输入./build/tools/caffe train –solver xxx.prototxt运行了程序的入口caffe.cpp main()

step2:caffe.cpp main()根据命令行输入的参数train调用caffe.cpp train()

step3:caffe.cpp train()读取xxx.prototxt的参数 调用solver.cpp Solver()的构造函数创建Solver对象

step4:创建Solver对象的时候需要调用solver.cpp Init()函数来初始化模型的网络(构造函数)

step 5:solver.cpp Init()函数调用solver.cpp InitTrainNet()和InitTestNets()函数来分别初始化训练和测试网络

step 6:InitTrainNet()通过xxx.prototxt指定的xxxnet.prototxt读取net的参数,调用net.cpp Net()的构造函数,创建训练网络

step 7:net.cpp Net()调用net.cpp Init()函数,通过for循环来1)创建网络中每一个Layer对象,2)设置bottom和top,3)调用layer.cpp Setup()

step 8:调用InitTestNets()创建测试网络,与InitTrainNet()类似。

step 9:运行返回到caffe.cpp train()中,利用创建好的solver对象调用solver.cpp Solver()函数

step 10:solver.cpp Solve()调用solver.cpp Step()函数,while循环迭代的次数,每次迭代1)调用net.cpp ForwardBackward()来前向以及后向传播 2)solver.cpp ApplyUpdate()更新参数 3)每一定轮次运行solver.cpp TestAll()

转自:http://blog.csdn.net/BVL10101111/article/details/74787586

posted @ 2018-03-04 14:33  stay_heart  阅读(148)  评论(0编辑  收藏  举报