您的位置:首页 > Web前端

深度学习框架caffe代码解析一:主要类的关系说明

2015-03-10 21:51 344 查看
          最近一段时间一直在研究caffe windowss的源代码,由于windows版本不是官方的正式版本,一直没有更新,所以可能后面代码结构已经发生了变化。下面是我对一些主要类的的理解,错误之处请指教。

           Bolb:在caffe中数据都保存在Bolb类中。包括每一层的输入与输出(vector<vector<Blob<Dtype>*> >结构),还有卷积核(vector<shared_ptr<Blob<Dtype> > >)以及全链接层的权重等。

          Layer类:在卷积神经网络中,有各种不同类型的层,在caffe中Layer类是所有层类的基类。Layer类有四个基本方法:

                         SetUp:是每个层的初始化方法。

                         Forward:是每个层的向前过程方法。

                         Backward:是每个层向后反馈的方法。

                         blobs:是返回每个层的数据(卷积和权重、偏置等)。

                       ConvolutionLayer类:是卷积层类,caffe的主要结构。  他在实现过程中使用了一个重要的方法im2col_cpu来加速cpu运算,这个方法还没有细看。

                        PoolingLayer类:下采样层类。一般支持MAX和AVE两种模式。

                         InnerProductLayer类:全链接层。

                         从层类的名字基本上可以看出他们的具体结构,这里就不细说了。

          net类:这个就是我们的网络了。

                       成员vector<shared_ptr<Layer<Dtype> > > layers_;组成网络的层。

                        方法 const vector<Blob<Dtype>*>& Net<Dtype>::ForwardPrefilled(Dtype* loss) 中代码:    

                             for (int i = 0; i < layers_.size(); ++i) {

                                      ·······

                             Dtype layer_loss = layers_[i]->Forward(bottom_vecs_[i], &top_vecs_[i]);

                                      ·······

                             }

                             实现了网络向前传递的过程,向后反馈的代码类似。

                 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: