[转]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