一总体结构
在caffe中,解决一个问题首先应该定义一个slover,反应到mnist例程中也就是lenet_solver.prototxt。该slover主要包括两部分,(1)为网络模型model,(2)为该模型参数的具体optimization方法及参数。model主要由各种layer组成,主要包括数据相关的DataLayer,图像滤波变换相关的VisionLayer,非线性激活函数ActivationLayer,各种损失函数LossLayer,以及其他常用Layer等。每一个layer保存的数据和layer之间互相传递的数据在caffe里都是以封装为blob格式。
二.blob数据单元
blob的内容
其中blob里的数据有两种,一个为权值data,另一个为更新权值会用到的梯度diff,这两种数据都是要么存放在在CPU RAM里,要么存放在GPU RAM里
数据在blob里以<SyncMemory>类型的指针形式存放,该类型隐藏了cpu和gpu内