【深度学习框架Caffe学习与应用】第五课 自定义神经层和数据输入层

一、自定义神经层

1.创建新定义的头文件,目录在caffe/include/caffe/layers/my_neuron_layer.hpp

  我复制了conv_layer.hpp文件,然后在该文件的内容上进行更改

如果只是需要CPU方法,可以注释掉forward_gpu和backward_gpu

修改对照内容如下(左侧是conv_layer.hpp,右侧是my_neuron_layer.hpp):










2.创建对应的源文件,目录在caffe/src/caffe/layers/my_neuron_layer.cpp

重写LayerSetUp,实现能从 prototxt 读取参数

重写方法Reshape,如果对继承类没有修改的话,就不需要重写

重写方法Forward_cpu(这个一定需要重写)

重写方法Backward_cpu(非必须)

×如果要GPU支持,还需要创建src/caffe/layers/my_neuron_layer.cu,同理重写方法Forward_gpu/Backward_gpu(非必须)


my_neuron_layer.cpp 添加注册的宏定义



最终.cpp文件如下



3.caffe/src/caffe/proto/caffe.proto注册新的Layer

  在caffe.proto中,先找到message LayerParameter{},在其中添加:


  这里的150表示标志位,而不是赋值

  然后添加一个自定义的parameter:


  在message V1LayerParameter { }中定义类型:40是标志位



4.重新编译





直到编译完成


5.测试自定义的Layer

定义deploy.prototxt



运行测试程序:test_my_neuron.py


结果如下



二、自定义数据输入层

以image_data_layer为例进行讲解

1.创建新定义的头文件,目录在caffe/include/caffe/layers/my_neuron_layer.hpp

  我复制了conv_layer.hpp文件,然后在该文件的内容上进行更改

修改对照内容如下(左侧是image_data_layer.hpp,右侧是my_data_layer.hpp):







2.创建对应的源文件,目录在caffe/src/caffe/layers/my_neuron_layer.cpp



下面只给出改动以后的my_data_layer.cpp代码








下面是caffe.proto文件的修改






测试新定义的数据层,使用原来的LeNet网络,把输入数据层做修改






  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值