windows-caffe添加新层
来源:互联网 发布:怎么样做淘宝直播 编辑:程序博客网 时间:2024/06/05 13:43
参考博客:
http://46aae4d1e2371e4aa769798941cef698.devproxy.yunshipei.com/kkk584520/article/details/52721838
因为是在windows-caffe下,所以在上述博客基础上做了些较为详细的记录,外加一点点修改
一、修改caffe.proto
在路径 caffe-windows-master\src\caffe\proto中找到caffe.proto.prototxt,添加
optional AllPassParameter all_pass_param = 155;
还有
message AllPassParameter { optional float key = 1 [default = 0]; }
添加完成后保存,然后就是windows-caffe下的多一步的操作,需要点击extract_proto批处理文件,重新生成caffe.pb.hpp和caffe.pb.cc文件。
二、添加新层头文件
在路径caffe-windows-master\include\caffe\layers下添加all_pass_layer.h文件
#ifndef CAFFE_ALL_PASS_LAYER_HPP_ #define CAFFE_ALL_PASS_LAYER_HPP_ #include <vector> #include "caffe/blob.hpp" #include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/layers/neuron_layer.hpp" namespace caffe { template <typename Dtype> class AllPassLayer : public NeuronLayer<Dtype> { public: explicit AllPassLayer(const LayerParameter& param) : NeuronLayer<Dtype>(param) {} virtual inline const char* type() const { return "AllPass"; } protected: virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top); //virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom, // const vector<Blob<Dtype>*>& top); virtual void Backward_cpu(const vector<Blob<Dtype>*>& top, const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom); //virtual void Backward_gpu(const vector<Blob<Dtype>*>& top, // const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom); }; } // namespace caffe #endif // CAFFE_ALL_PASS_LAYER_HPP_
这里我在上述博客的基础上,将关于gpu的虚函数注释掉了,因为我的caffe是在GPU模式下编译的(若不注释,会出现链接错误),若是在CPU模式下编译,可不注释。
三、添加新层源文件
caffe-windows-master\src\caffe\layers路径下添加all_pass_layer.cc
#ifndef CAFFE_ALL_PASS_LAYER_HPP_ #define CAFFE_ALL_PASS_LAYER_HPP_ #include <vector> #include "caffe/blob.hpp" #include "caffe/layer.hpp" #include "caffe/proto/caffe.pb.h" #include "caffe/layers/neuron_layer.hpp" namespace caffe { template <typename Dtype> class AllPassLayer : public NeuronLayer<Dtype> { public: explicit AllPassLayer(const LayerParameter& param) : NeuronLayer<Dtype>(param) {} virtual inline const char* type() const { return "AllPass"; } protected: virtual void Forward_cpu(const vector<Blob<Dtype>*>& bottom, const vector<Blob<Dtype>*>& top); //virtual void Forward_gpu(const vector<Blob<Dtype>*>& bottom, // const vector<Blob<Dtype>*>& top); virtual void Backward_cpu(const vector<Blob<Dtype>*>& top, const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom); //virtual void Backward_gpu(const vector<Blob<Dtype>*>& top, // const vector<bool>& propagate_down, const vector<Blob<Dtype>*>& bottom); }; } // namespace caffe #endif // CAFFE_ALL_PASS_LAYER_HPP_
在路径下添加之后,需要在caffe VS C++工程中添加.hpp文件和.cc文件
四、重新编译
选中caffe工程,点击rebuild即可
五、实验添加的新层
写个简单的测试网络结构 deploy.prototxt
name: "AllPassTest" layer { name: "data" type: "Input" top: "data" input_param { shape: { dim: 10 dim: 3 dim: 227 dim: 227 } } } layer { name: "ap" type: "AllPass" bottom: "data" top: "conv1" all_pass_param { key: 12.88 } }
windows-caffe测试方法和在Linux下相同,打开CMD,进入caffe根目录
bin\caffe.exe time -model deploy.prototxt
done
这里只是做个记录
0 0
- windows-caffe添加新层
- caffe添加新层windows
- Caffe-Windows添加新层
- caffe添加新层windows
- caffe添加新层windows
- 【caffe-Windows】新层添加——LSTM
- caffe添加新层教程
- caffe添加新层教程
- caffe 添加一个新层
- caffe添加新层教程
- caffe中添加新层
- caffe添加一个新层
- caffe添加新的层
- caffe添加新层教程
- caffe添加新层教程
- 在caffe中添加新的层
- caffe 添加新的网络层
- 为caffe添加新的层
- Xcode添加静态库以及编译选项配置常见问题
- 【caffe源码研究】第三章:源码篇(2) :Blob 和 SyncedMemory
- JavaScript正则表达式
- LDNS
- 【hdu 1536】S-Nim
- windows-caffe添加新层
- centos7 安装mysql5.7.10
- java与tomcat7类加载机制
- Linux 性能监控
- Swarm mode环境模型-小结篇
- Android开发——进程间通信之AIDL(二)
- soap 和 wsdl
- Eclipse与Android的那些事
- 二分法查找