您的位置:首页 > Web前端

Caffe 不同版本之间layer移植方法

2016-08-11 18:51 621 查看
本系列文章由 @yhl_leo 出品,转载请注明出处。

文章链接: http://blog.csdn.net/yhl_leo/article/details/52185521

(前两天这篇博客不小心被自己更改删除了,现在重新补上。)

Caffe版本一直在不停更新,新版本往往会包含一些新的layer,如果只想将该layer移植到自己工程的版本中,该怎么做呢?看到网上有关于添加新layer的教程:

Add a class declaration for your layer to the appropriate one of
common_layers.hpp
,
data_layers.hpp
,
loss_layers.hpp
,
neuron_layers.hpp
, or
vision_layers.hpp
. Include an inline implementation of
type
and the
*Blobs()
methods to specify blob number requirements. Omit the
*_gpu
declarations if you’ll only be implementing CPU code.

Implement your layer in
layers/your_layer.cpp
.

SetUp
for initialization: reading parameters, allocating buffers, etc.

Forward_cpu
for the function your layer computes

Backward_cpu
for its gradient

(Optional) Implement the GPU versions
Forward_gpu
and
Backward_gpu
in
layers/your_layer.cu
.

Add your layer to
proto/caffe.proto
, updating the next available ID. Also declare parameters, if needed, in this file.

Make your layer createable by adding it to
layer_factory.cpp
.

Write tests in
test/test_your_layer.cpp
. Use
test/test_gradient_check_util.hpp
to check that your Forward and Backward implementations are in numerical agreement.

但是,这种方法并不一定对移植有用,以
CropLayer
为例,按照上述的方法肯定是行不通的,编译的过程中会反复出现关于函数
DiagonalAffineMap
的错误。查看版本更新记录:Crop layer for automatically aligning computations,可以发现,原来不只是添加两个文件那么简单的事情,按照版本更新的差异,逐个文件进行更改就可以使用。

因此,对于移植来说,直接搜索版本更新记录,是更加直接和高效的办法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  caffe layer 移植