caffe源码(带详细中文注释---windows版本):https://github.com/qq249356520/caffe_comment_chinese
如下展示的是以minst手写字符检测为例,数据集为cifar-10网络数据库中图片,图片大小为24*24。所使用的网络是经典的LeNet网络,接下来便以LeNet网络为例执行caffe代码debug,以明确caffe运行流程。
在将所需路径改为绝对路径后
配置
其中train代表的就是训练过程,而不是测试。
F5运行caffe框架
在caffe网络开始训练之前,需要先搭建网络,详述于网络搭建部分。
在网络搭建成功后运行solver(caffe.cpp),此函数位于入口函数,在决定使用的设备,配置信息,简单参数后开始构建网络,详见网络搭建。
构建网络成功后
检查weight和snapshot,是继续训练还是从头训练
检查参与训练gpu数目
运行solve(caffe.cpp)函数开始优化网络
优化网络即学习权重和偏置参数以使损失降到最低
后进入Step函数
如下,为testAll和其判断条件,后优化网络的过程中不再执行testAll
而在第一次优化网络的过程中需要由于已经有了初始化的权重和偏差,需要先运行一次叫TestAll的函数检测一次数字,此步骤和训练网络时的步骤相同。
TestAll第一次返回权重所产生的损失,然后进行优化降低损失
然后 便开始整数训练网络,具体步骤见正式训练网络
在网络训练结束后,返回loss值
然后根据迭代次数平均化损失
随后便要进行权值和偏差更新
具体见caffe debug之参数更新 (稍后更新)
随后便是文件中定义的iter次迭代训话训练。
训练结束后写入caffemodel
并且之后会检查一次
再然后继续运行一次,如果必要,来显示损失和输出。
并且打印输出和损失。
然后再运行一次testAll,检查现在的权重精度和损失
至此 优化结束 Step函数执行结束。
回到caffe.cpp,并且结束train函数。结束main函数。caffe运行结束。