Caffe从四个层次来理解:Blob,Layer,Net,Solver。
Blob
Caffe的基本数据结构,用四维矩阵Batch\*Channel\*Height\*Width
表示,存储了包括神经元的激活值、参数、以及相应的梯度(dW,db)
。其中包含有cpu_data、gpu_data、cpu_diff、gpu_diff、
mutable_cpu_data、mutable_gpu_data、mutable_cpu_diff、mutable_gpu_diff
这一堆很像的东西,分别表示存储在CPU和GPU上的数据(印象中二者的值好像是会自动同步成一致的)。其中带data的里面存
储的是激活值和W、b
,diff中存储的是残差和dW、db
。另外带mutable
和不带mutable
的一对指针所指的位置是相同的,只是不带mutable
的只读,而带mutable
的可写。