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
- caffe-windows添加自己的loss层
- 新版caffe添加自己的层(目前只学会添加,我想要添加的loss还没能实现)
- caffe添加自己的层
- Caffe添加自定义层-自定义loss
- 【Caffe实践】 添加自己的网络层
- 【Caffe实践】 添加自己的网络层
- Caffe 中添加自己的网络层
- Caffe Loss层
- Caffe Loss层
- Caffe Loss 层
- caffe-windows添加自己的工程
- center loss代码注释(caffe新添加层)
- 修改caffe源代码--添加loss(层)函数--CPU
- 修改caffe源代码--添加loss(层)函数--GPU
- 修改caffe源代码从添加loss(层)函数开始
- caffe中添加自己的layer(以triplet loss为例)
- windows-caffe添加新层
- caffe添加新层windows
- linux服务器安全配置实例(一)
- Python 字符编码判断
- mysql悲观锁
- 最近项目要求开发一个echarts的小功能图表,需要动态加载数据,现在做完后把源码拷上来
- 八、UI-Grid 单页上的多个表格
- caffe-windows添加自己的loss层
- ora 01658
- CentOS 7 安装配置openvpn 2.3.12
- 剑指offer-面试题6 重建二叉树
- 索引设计的原则
- 联通图形和最小花费路径(MCP)
- [图像]畸变校正详解
- 详解js中对象的深浅拷贝
- 一致性hash介绍和实现