Caffe 不同版本之间layer移植方法
本系列文章由 @yhl_leo 出品,转载请注明出处。
文章链接: http://blog.csdn.net/yhl_leo/article/details/52185521
(前两天这篇博客不小心被自己更改删除了,现在重新补上。)
Caffe版本一直在不停更新,新版本往往会包含一些新的layer,如果只想将该layer移植到自己工程的版本中,该怎么做呢?看到网上有关于添加新layer的教程:
- Add a class declaration for your layer to the appropriate one of 
common_layers.hpp,data_layers.hpp,loss_layers.hpp,neuron_layers.hpp, orvision_layers.hpp. Include an inline implementation oftypeand the*Blobs()methods to specify blob number requirements. Omit the*_gpudeclarations if you’ll only be implementing CPU code. - Implement your layer in 
layers/your_layer.cpp.SetUpfor initialization: reading parameters, allocating buffers, etc.Forward_cpufor the function your layer computesBackward_cpufor its gradient
 - (Optional) Implement the GPU versions 
Forward_gpuandBackward_gpuinlayers/your_layer.cu. - Add your layer to 
proto/caffe.proto, updating the next available ID. Also declare parameters, if needed, in this file. - Make your layer createable by adding it to 
layer_factory.cpp. - Write tests in 
test/test_your_layer.cpp. Usetest/test_gradient_check_util.hppto check that your Forward and Backward implementations are in numerical agreement. 
但是,这种方法并不一定对移植有用,以CropLayer为例,按照上述的方法肯定是行不通的,编译的过程中会反复出现关于函数DiagonalAffineMap的错误。查看版本更新记录:Crop layer for automatically aligning computations,可以发现,原来不只是添加两个文件那么简单的事情,按照版本更新的差异,逐个文件进行更改就可以使用。
因此,对于移植来说,直接搜索版本更新记录,是更加直接和高效的办法。
Caffe 不同版本之间layer移植方法的更多相关文章
- 不同JDK版本之间的intern()方法的区别-JDK6    VS    JDK6+
		
String s = new Stirng(“a”); s.intern(); JDK6:当调用intern()方法时,如果字符串常量池先前已创建出该字符串对象,则返回池中的该字符串的引用.否则,将此 ...
 - 嵌入式linux应用程序移植方法总结
		
嵌入式linux应用程序移植方法总结 前段时间一直在做openCapwap的移植和调试工作,现在工作已接近尾声,编写本文档对前段工作进行一个总结,分享下openCapwap移植过程中的经验和感悟.江浩 ...
 - [MFC] VS2013版本MFC工程移植到VC6.0上
		
:VS虽号称“宇宙最强IDE”,但是有时候安装包太大,动不动就几个G:而且安装好之后也会多出很多几乎很难用到的部分,这对于那些处女座的人如何忍受!本文不是吐槽,而是给出一种在应急场景下,不用安装新版本 ...
 - CLR/.NET/C#/Visual Studio/ASP.NET各版本之间的关系(转)
		
由于这篇文章记录的是2015年7月,那时.net core还是叫做.net core 5 名词定义 下列这些名词,写.NET 的人一定都不陌生,但你是否有真正理解呢?如果看了我的摘要文字说明还无法理解 ...
 - 【转】(笔记)CANopen协议【CANFestival】移植方法
		
一.背景 CAN组网就必须得要应用层协议,原因就在于 * 便于网络管理与控制 * 确认数据的收发 * 发送大于8个字节的数据块(CAN每帧数据传输大小为8字节) * 为不同节点分配不同的报文标识符 * ...
 - 查看linux版本的三种常用方法
		
1) 登录到服务器执行 lsb_release -a ,即可列出所有版本信息,例如: [root@3.5.5Biz-46 ~]# lsb_release -a LSB Version: 1.3 Dis ...
 - NDK Android* 应用移植方法
		
概述 本指南用于帮助开发者将现有的基于 ARM* 的 NDK 应用移植到 x86.假设您已经拥有一个正常执行的应用,须要知道怎样可以高速让 x86 设备在 Android* Market 中找到您的应 ...
 - .net  Framework各个版本之间的发展
		
原文:.net Framework各个版本之间的发展 上个星期看到了.NET 4.0框架退休日期逐渐临近文章,发现自己一直在使用NET FrameWork,身为一个NET程序员,里面大概的区别自己还 ...
 - (笔记)CanOpen协议【CanFestival】移植方法 支持VC、QT、STM32
		
转自http://bbs.21ic.com/icview-878522-1-1.html 前段时间学习了CanOpen协议,到网上下载的CanFestival3-10源码,移植到VC.QT.STM ...
 
随机推荐
- How to detect the presence of the Visual C++ 2010 redistributable package
			
Question: I have seen your previous blog posts that describe how to detect the presence of the Visua ...
 - 快速搭建一个Fabric 1.0的环境(转)
			
文章来源:http://www.cnblogs.com/studyzy/p/7437157.html 感谢博主@深蓝居 提供的技术文档,按照文档根据自己遇到的问题做了一定修改,方便自己回顾和再次搭建 ...
 - 详解HTML中的表格标签
			
详细代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" ...
 - POJ  3162 Walking Race (树的直径,单调队列)
			
题意:给定一棵带边权的n个节点的树,首先要求出每个点的最长路,然后写成序列d[1],d[2]...d[n],然后求满足 区间最大值-区间最小值<=k 的最大区间长度为多少? 思路: 分两步进行: ...
 - 为什么字符串String是不可变字符串&&"".equals(str)与str.equals("")的区别
			
为什么字符串String是不可变字符串 实际上String类的实现是char类型的数组 虽然说源码中设置的是private final char[] value; final关键词表示不可变动 但是只 ...
 - scrollviews page分页实现方式
			
代码 buttonX = 0; buttonW = 50; buttonH = 20; margin = (self.view.width - 5 * buttonW) / 6; CGFloat ym ...
 - Android(java)学习笔记144:网络图片浏览器的实现(ANR)
			
1.我们在Android下,实现使用http协议进行网络通信,请求网络数据.这里是获取网络上的图片信息,让它可以显示在手机上: 但是我们这个手机连接网络是很费时间,如果我们在主线程(UI线程)中写这个 ...
 - SSave ALAsset image to disk fast on iOS
			
I am using ALAsset to retrieve images like that: [[asset defaultRepresentation] fullResolutionImage] ...
 - WPF中在后台实现控件样式
			
加入现在有一个Button的样式如下: <Style TargetType="{x:Type Button}" x:Key="MyButton">. ...
 - call和apply方法的异同
			
基本作用:改变对象的执行上下文. this指向执行上下文.(执行环境) this指向的永远是调用该方法的对象 function func(){ this.a=1; console.log(this.a ...