caffe 自定义层/添加自己的损失函数

来源:互联网 发布:网络软件工程师培训 编辑:程序博客网 时间:2024/05/22 22:32

caffe 自定义层有两种方式:一个是通过python层,另外就是修改源代码的方式。

自定义激活层

文献[2] 以循序渐进的学习方式先后介绍了:
google protocol buffe , Blob ,SyncedMemory
,shared_ptr ,layer,data layer 然后利用这些知识来自定义一个层。

其给出的例子是定义一个power层,可以通过caffe的api参考其结构:

http://caffe.berkeleyvision.org/doxygen/classcaffe_1_1PowerLayer.html

这里写图片描述

其继承了神经元层(激活层)。

自定义损失函数

文献[3]给出了自定义损失函数:TripletLoss
我们通过caffe的api参考一般损失函数的结构。

损失层的继承结构:

这里写图片描述

SoftmaxWithLossLayer 层的继承关系:

这里写图片描述

步骤 Only for CPU, window:

以下内容来自:https://github.com/BVLC/caffe/pull/3123

编辑:

E:\caffe-windows-lib\src\caffe\proto\caffe.proto

添加 TripletLossParameter,后面的147根据自己的caffe.proto说明,下一个ID应该是多少:

这里写图片描述

   optional WindowDataParameter window_data_param = 129;+  optional TripletLossParameter triplet_loss_param = 147;message TripletLossParameter {  //margin for negative triplet  optional float margin = 1 [default = 1.0];  optional uint32 losstype = 2 [default = 1];  optional uint32 num_negatives = 3 [default = 3];  optional uint32 use_pair = 4 [default = 0];}

将 triplet_loss_layer.hpp,triplet_loss_layer.cpp为了和源代码统一分别拷贝到E:\caffe-windows\include\caffe\layers\
和E:\caffe-windows\src\caffe\layers\目录下,然后添加到caffe工程。重新编译即可。

运行和测试网络

因为没有:3D model from PASCAL3D+ or faces in MultiPIE。而我们只是想测试一下网络,学习一下其添加新层的思想。我们使用两个AR数据集。关于实验的所有数据集以及triplet_loss_layer的代码都在下面的百度链接中:

链接:http://pan.baidu.com/s/1mhVh7za 密码:drtm

参考文献:
1 https://github.com/BVLC/caffe/wiki/Development#developing-new-layers [官网 Developing new layers]
2.http://blog.csdn.net/u011104550/article/details/51592626 [caffe源码学习(六) 自定义层]
3. http://blog.csdn.net/u014696921/article/details/52278655 [caffe添加损失层PrecisionRecallLosslayer(一)]
4. http://www.cnblogs.com/louyihang-loves-baiyan/p/5260863.html [Caffe 单独测试添加的layer]
5. http://blog.csdn.net/u011070171/article/details/52160224 [caffe 更改源码,使得输入数据为多个标签]
6. http://blog.csdn.net/thesby/article/details/50822250 [如何在caffe中自定义网络层]
7. http://blog.csdn.net/u012177034/article/details/52144325 [Caffe学习(六)损失层及其参数设置]
8. http://blog.csdn.net/kuaitoukid/article/details/41865803 [如何在caffe中添加新的Layer]
9. http://www.cnblogs.com/neopenx/p/5187586.html [从零开始山寨Caffe·壹:仰望星空与脚踏实地]

0 0
原创粉丝点击