caffe-windows添加自己的loss层

来源:互联网 发布:node.js php哪个简单 编辑:程序博客网 时间:2024/05/22 11:30

  最近几天忙着在添加center loss层,因为是在windows系统下,所以参考了很多的博客,发现都是在linux下的,遇到很多问题,这里和大家分享自己的经历,希望对大家有个帮助,也对在windows下跑着caffe和我一样的菜鸟帮助。另外,如果只是添加center loss(cvpr2015)或者triple loss(cvpr2015)年,我建议配置happynear大神的最新版caffe(vs2015+cuda8.0+cudnnV5.0,注:vs15估计很多人会安装出错),里面已经有这两个层,因为我使用的是BLVC的官方版(vs2013+cuda7.5+cudnnv4.0),所以比较老,需要添加center loss层。

首先给出caffe配置的一个原码 教程链接如下:

https://github.com/BVLC/caffe/tree/windows

http://m.blog.csdn.net/article/details?id=50819464

http://blog.csdn.net/fuwenyan/article/details/62039341

一个是有GPU,一个无GPU两个配置教程

happynear的代码链接:

https://github.com/happynear/caffe-windows

教程大家可以找

进入正题:

第一步,编写新层的.hpp,.cpp,.cu.主要是头文件,层的定义,层的实现(正向传播,反向传播等),GPU实现的实现,将已经写好的。CPP,CU文件放到~/caffe-master(这里的名称可能不一样)/src/caffe/layers内,就是工程里的src/caffe/layers。.hpp放到include/caffe/layers内,在写。cpp文件最后需加入注册函数INSTANTIATE_CLASS(CenterLossLayer); REGISTER_LAYER_CLASS(CenterLoss);,详情请大家搜索相关微博。

第二步,修改src/caffe/proto/caffe.proto文件,加入新层的ID,与message(注:所有的ID必须是唯一的)

打开文件找到message LayerParameter 定义在文件里添加ID(注:请仔细看你的版本LayerParameter那行的的注释,下个ID是多少,我这里是151


加入参数message函数


找到message V1LayerParameter里enum LayerType处加入ID


message V1LayerParameter最后加入ID


如果你的层参数用到没有定义的参数变量还要在message V0LayerParameter加入定义

如你的message函数是这样的定义一个自己的float diff_scale

message DiffCutoffParameter { optional float diff_scale = 1 [default = 1];//默认梯度不缩放}

那么就要在message V0LayerParameter加入定义

 在message V0LayerParameter {}添加参数定义 optionalfloat diff_scale = 47 [default = 1];

另外还有一个要修改的在~\caffe-master\src\caffe\util\内upgrade_proto.cpp里const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) {
  switch (type) {}里添加相关代码case...return(这步是可选的,我之前没有这步,大多数博客也没有,加了也没有好,主要是libcaffe没改,所以这步是不是必须的,我也没有测试,我改好了,又改了libcaffe也是可以的,

所以大家可以不改这一步,试试看,可以不,方便的话,留言告诉我)


这里CENTER_LOSS与V1LayerParameter内名称一样的


这里最后一步,对于Windows下来说,是最重要的,找到caffe-master\windows\libcaffe\下的libcaffe.vcxproj,libcaffe.vcxproj.filters

修改,也就是加入.hpp,.cpp,.cu文件的路径

第一步,在libcaffe.vcxproj加入


第二步:libcaffe.vcxproj.filters加入




最后重新编译caffe就可以了

测试minst,层配置


运行截图


感谢一下几位博主的分享

参考链接

http://blog.csdn.net/shuzfan/article/details/51322976

http://blog.csdn.net/u014696921/article/details/52278655?locationNum=6

http://blog.csdn.net/u013488563/article/details/50325631




1 0
原创粉丝点击