caffe添加新层教程

本文档详细介绍了如何在Caffe中添加新的diff_cutoff_layer,该层在正向传播时直接传播,反向传播时根据指定比例调整梯度。教程包括创建HPP头文件、CPP源文件、修改proto文件以及编译Caffe,并提供了注意事项和使用示例。
摘要由CSDN通过智能技术生成

时间节点2016.04,即caffe重大更新后(每一种层都对应一个同名cpp和hpp文件)。

描述一下本次要实现层的功能:

正向直接copy传播,反向时将梯度放缩指定倍。

这个层对一些特定的网络结构有很重要的辅助作用,比如有时我们的网络存在分支,但我们不希望某一分支影响之前层的更新,那么我们就将梯度放缩0倍。

(1)创建HPP头文件diff_cutoff_layer.hpp

不同功能类型的层所引的头文件也不同,具体大家可以到“caffe/include/caffe/layers”目录下找相似的现成的文件参考 。我们这次写的hpp文件最后也要放在这个目录下。

注意:下面注释包起来的部分为需要注意的部分。

特别注意:命名的时候应严格一致和注意大小写,这一点是导致很多人加层失败的主要原因。

//*****************************************
#ifndef CAFFE_DIFFCUTOFF_LAYER_HPP_
#define CAFFE_DIFFCUTOFF_LAYER_HPP_
//*****************************************

#include <vector>
#include "caffe/blob.hpp"
#include "caffe/layer.hpp"
#include "caffe/proto/caffe.pb.h"

//*****************************************
#include "caffe/layers/neuron_layer.hpp"
//*****************************************

namespace caffe {

template <typename Dtype>
//******以后我们层的type: "DiffCutoff" *******
  class DiffCutoffLayer : public NeuronLayer<Dtype> {
//*****************************************
  public:
    explicit DiffCutoffLayer(const LayerParameter& param) : NeuronLayer<Dtype>(param) {}
    virtual void LayerSetUp(const 
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值