如何将他人实现的caffe的层整合到自己caffe的框架下
来源:互联网 发布:mac virtualbox 全屏 编辑:程序博客网 时间:2024/06/06 02:58
使用caffe时,前人已经实现了很多层的功能,合理利用前人实现的层可以帮助我们快速的实现自己的想法。但由于caffe没有明确的版本,不同工作所使用的caffe可能有较大的差别,包括部分底层的函数可能都有变化。有如下建议:
1、尽量避免使用最新版的caffe,自己使用的caffe与所用的代码中的caffe应尽可能接近。
目前最新版的caffe,对于每个类有它对应的**layer.hpp和**layer.cpp文件。但老版本的caffe中,每个类都有自己的实现文件**layer.cpp,但声明文件都是派生于layer.hpp和neuron_layers.hpp等文件,并在vision_layers.hpp中指明每个类可视化的参数。为了减少工作量,应选择基本框架尽可能一直的caffe。
2、需要修改的文件
必须有对应的声明文件**layer.hpp和实现文件**layer.cpp。对于需要从train_val.prototxt中传入参数的layer,需要在caffe.proto中添加相应的关键字。有时候可能需要修改vision_layers.hpp(注意,不同版本的caffe中vision_layers.hpp的写法不一样).
3、注意事项
(1)在prototxt文件中,旧版用layers,新版需要用layer,否则关键字无法识别。
4、数据输入层
数据输入时,一般涉及读写文本文件的操作,会用到C++中vector、string等类型的变量,需要注意不同类型的变量能够执行不同的操作。
caffe中使用blob以四维数组的形式存储数据,[0][1][2][3]分别对应num, channel, width 和hight。当不清楚数据的大小形式时,可以使用LOG(INFO)<<"num "<<num,输出进行查看。
5、声明文件
在声明文件中,下述语句用于指示某一层输入输出blob的个数:
virtual inline int ExactNumBottomBlobs() const { return 1; }
virtual inline int ExactNumTopBlobs() const { return 1; }
virtual inline int MinTopBlobs() const { return 1; }
virtual inline int MaxTopBlobs() const { return 2; }
等。
6、实现文件
(1)blob指针具有以下属性:num,channel,width,hight,以及:
count,count = num*channel*width*hight
可以据此计算,dim = count / num;
(2)Backward实现中,propagate_down[0]、propagate_down[1]等分别用于计算对于第1、2等输入的修正量。没有修正的层,需要将其_diff置为0.
- 如何将他人实现的caffe的层整合到自己caffe的框架下
- caffe添加自己的层
- ShuffleNet在Caffe框架下的实现
- caffe框架下添加自己的MFC程序(下)
- 【Caffe实践】 添加自己的网络层
- 【Caffe实践】 添加自己的网络层
- Caffe 中添加自己的网络层
- caffe-windows添加自己的loss层
- caffe 定义自己的python层
- Caffe框架下如何训练自己的数据集和网络
- caffe 框架下微调已有模型训练自己的数据实现图像分类
- caffe的concat层
- caffe框架制作自己的数据集
- tensorflow2caffe(3) : 如何将tensorflow框架下训练得到的权重转化为caffe框架下的权重参数
- 如何给caffe添加新的层
- 【caffe】windows下让自己的程序调用caffe库
- Caffe中卷积层的实现
- caffe中卷积层的实现
- APC缓存简介
- Android源码分析之Message
- 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
- url请求带参编码及解码
- Android 查看SIM卡状态及SIM信息
- 如何将他人实现的caffe的层整合到自己caffe的框架下
- Unity UGUI 的RectTransform参数的设置
- 利用iptables的DNAT功能实现流量转发
- Pascal's Triangle II
- file_get_contents 输出乱码问题
- osg中模型零点的调整方法
- android中的坐标系以及获取坐标的方法
- div居中
- mysql-connector-java-5.1.35.jar 包和MySQL6.0.11相冲突解决方案