zoukankan      html  css  js  c++  java
  • Caffe 不同版本之间layer移植方法


    本系列文章由 @yhl_leo 出品,转载请注明出处。
    文章链接: http://blog.csdn.net/yhl_leo/article/details/52185521


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

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

    1. 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.
    2. 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
    3. (Optional) Implement the GPU versions Forward_gpu and Backward_gpu in layers/your_layer.cu.
    4. Add your layer to proto/caffe.proto, updating the next available ID. Also declare parameters, if needed, in this file.
    5. Make your layer createable by adding it to layer_factory.cpp.
    6. 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,可以发现,原来不只是添加两个文件那么简单的事情,按照版本更新的差异,逐个文件进行更改就可以使用。

    因此,对于移植来说,直接搜索版本更新记录,是更加直接和高效的办法

  • 相关阅读:
    DOM(文档对象模型)
    客户端检测
    mysql之触发器
    mysql之select(二)
    浅谈mysql中varchar(m)与char(n)的区别与联系
    mysql之select(一)
    mysql(一)
    mysql5.7.11安装遇到的问题
    Java 网络编程(二)
    Java 网络编程(一)
  • 原文地址:https://www.cnblogs.com/hehehaha/p/6332115.html
Copyright © 2011-2022 走看看