caffe 结构之Blob

来源:互联网 发布:淘宝店铺卖气模名字 编辑:程序博客网 时间:2024/05/01 18:56

想了解的问题

    1 Blob的基本结构

    2 实际应用的时候,各种类型的层 对应的实例Blob 长什么样

   Blob内部其实包含两个存储对象data_diff_,前者存储前向传递的数据,后者存储反向传递的梯度

   Blob的定义如下

protected:  shared_ptr<SyncedMemory> data_;  shared_ptr<SyncedMemory> diff_;  vector<int> shape_;  int count_;  int capacity_;

1 data 里边存储的是 w,b的当前值

2 diff里存储的是 w,b的导数 * 学习率(将来更新的时候,直接矩阵相减就行了)

3 shape 记录了 Blob的形状 N*C*W*H

4 count 是shape的累乘

5 表示 当前Blob的元素个数(?)

  那么在具体的层 都是如何存储的呢

  每个layer 会 有个Blob 类型的向量 成员变量来存储 分别存储W,b

       

 输入层 :1000幅640*480 RGBD图像数据,其Blob形状为(1000, 4, 480, 640)

                    data:存储的就是原始的像素点  

                    diff: null

     卷积层:    96个大小11*11的滤波核,处理16通道的输入数据,w对应的Blob的形状为(96,16,11,11),对应的blob的形状(96,16,1,1)

                     data: 存储的就是 对应 的w(因为卷积核 是待训参数)

                     diff:   存储的是 w'*lr 

                                 [疑问? 不是说 共享权重吗]

                                权值共享: 96表示每张图想要训练96个核, 16 表示前层输入是16张图,每个核大小为                                    11*11,这种共享是一张图内的 各个局部感受野 共享

全连接层: 1000个输出,1024个输入的全连接层,其参数Blob的形状为(1000,1024)。

                      data: 存储的是w 

                      diff:    w'*lr

权值更新 : 

        bottom top

         Forward: (目标是为了 得到cost 或者 是 分类)

              bottom - > Forward(当前层的w,b 规则) -> top 

         Backward:(目标是更新权值)

              bottom -> Backward(当前层的w,b 规则) -> top (BP1,BP2)

              同时更新 w,b  (BP3,BP4)

         


http://imbinwang.github.io/blog/inside-caffe-code-blob

http://blog.163.com/yuyang_tech/blog/static/2160500832015713105052452/

0 0
原创粉丝点击