当前位置: 首页 > news >正文

caffe实现自己的层

http://blog.csdn.net/xizero00/article/details/52529341

将这篇博客所讲进行了实现

 

1.LayerParameter也在caffe.proto文件中

2.头文件直接复制博客的,命名为image_scale_layer.hpp,然后放在caffe/include/caffe/layers下

3.实现文件也是直接复制博客的,命名为image_scale_layer.cpp,放在caffe/src/caffe/layers下

4.制作minist的lmdb数据,放在examples/mnist下,这个部分另一篇博客已经总结

5.在examples目录下创建文件夹imagescale,复制博客中网络的prototxt,并放在这个目录下

6.复制博客中solver的prototxt,放在examples/imagescale目录下

7.复制博客的bash文件,放在caffe目录下。然后运行这个bash文件就完成

 

按照博客的流程, 最后在运行shell脚本时出现了错误:

 

我的solver的确在那个目录下,我也不知道为何会报这个错误。之后我将脚本的命令直接输入在终端,即:

./build/tools/caffe train --solver=examples/imagescale/solver.prototxt

会出现以下错误

这时我反应过来应该是我没有生成mnist_train_lmdb这个文件,按照之前博客的方式生成之后再执行这个命令就正确了。但执行那个脚本还是报一样的错误。

 

之前我按照上一个博客的命令sudo sh ./examples/mnist/create_mnist.sh 生成mnist_train_lmdb,会报下面的错误:

因为我是远程访问的服务器,所以会造成现在这种permission denied的情况

 

总结整个流程:1.实现自己层的.hpp文件,并放在include/caffe/layers目录下

       2.实现自己层的.cpp或.cu,并放在src/caffe/layers目录下。注意:

           需要在.cpp添加注册的宏定义:1.INSTANTIATE_CLASS(MyNeuronLayer);  

                         2.REGISTER_LAYER_CLASS(MyNeuron); 

           如果有my_neuron_layer.cu,则添加:INSTANTIATE_LAYER_GPU_FUNCS(MyNeuronLayer);  

           都是在cpp的末尾加

           如果不加,会报以下错误:

           

       3.修改src/caffe/proto/caffe.proto文件,这个文件要修改两个地方:在LayerParameter加ID号,添加实现类所需要的参数。这样你在编写 train.prototxt 或者          test.prototxt 或者 deploy.prototxt 时就能把新 Layer 的描述写进去,便于修改网络结构和替换其他相同功能的 Layer 了

       4.编译

       5.你还可以在src/caffe/test/中增加layer的测试代码,对所写的layer前传和反传进行测试,就像另一篇自己写的博客caffe单独测试添加的layer,但写测试代码

         有点麻烦

     

http://www.cnblogs.com/zf-blog/p/6551278.html

 

 

中间写的过程怎么知道自己写的正确不正确,怎么去debug是我需要继续思考的

相关文章:

  • Python 字典 values() 方法
  • 【学习笔记】计算机网络-网络常用命令(一)
  • 洛谷2073 送花 线段树
  • Class的继承
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • iOS之CAGradientLayer属性简介和使用
  • 近百年前宝洁发明“肥皂剧”,阿里要创造“种草剧”!
  • python 字符框
  • SpringMVC学习系列 之 数据验证
  • easyui-combobox 设置option内容不换行
  • 3.7 su命令 3.8 sudo命令 3.9 限制root远程登录
  • fs检测文件夹状态
  • webapi 获取请求参数
  • 风险管理:企业要为云端的5种风险承担责任
  • 分享关于Entity Framework 进行CRUD操作实验的结果
  • 【391天】每日项目总结系列128(2018.03.03)
  • 【技术性】Search知识
  • Docker 笔记(1):介绍、镜像、容器及其基本操作
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • gops —— Go 程序诊断分析工具
  • JavaScript 一些 DOM 的知识点
  • JavaScript服务器推送技术之 WebSocket
  • Making An Indicator With Pure CSS
  • PV统计优化设计
  • SpiderData 2019年2月25日 DApp数据排行榜
  • yii2权限控制rbac之rule详细讲解
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 面试遇到的一些题
  • 让你的分享飞起来——极光推出社会化分享组件
  • 无服务器化是企业 IT 架构的未来吗?
  • 国内开源镜像站点
  • 如何用纯 CSS 创作一个货车 loader
  • ###项目技术发展史
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • $ git push -u origin master 推送到远程库出错
  • (33)STM32——485实验笔记
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (附源码)计算机毕业设计SSM在线影视购票系统
  • (三) diretfbrc详解
  • (原創) 物件導向與老子思想 (OO)
  • .equal()和==的区别 怎样判断字符串为空问题: Illegal invoke-super to void nio.file.AccessDeniedException
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 分布式技术比较
  • ;号自动换行
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • @javax.ws.rs Webservice注解
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [ vulhub漏洞复现篇 ] AppWeb认证绕过漏洞(CVE-2018-8715)
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [Angular] 笔记 21:@ViewChild
  • [BeginCTF]真龙之力
  • [json]定义、读写