
如何在新版本caffe里添加新的一层
2个回答
展开全部
首先确定要添加的layer的类型,是common_layer 还是 data_layer 还是loss_layer,
neuron_layer, vision_layer
,这里的Wtf_Layer肯定是属vision_layer了,所以打开vision_layers.hpp
然后复制convolution_layer的相关代码,把类名还有构造函数的名字改为WtfLayer,如果没有用到GPU运算,那么把里面的带GPU的函数都删掉
2. 将Wtf_layer.cpp 添加到src\caffe\layers文件夹中,代码内容复制convolution_layer.cpp 把对应的类名修改(可以搜一下conv关键字,然后改为Wtf)
3. 假如有gpu的代码就添加响应的Wtf_layer.cu (这里不添加了)
4. 修改proto/caffe.proto文件,找到LayerType,添加WTF,并更新ID(新的ID应该是34)。假如说Wtf_Layer有参数,比如Convolution肯定是有参数的,那么添加WtfParameter类
5. 在layer_factory.cpp中添加响应的代码,就是一堆if ... else的那片代码
6. 这个可以不做,但是为了结果还是做一个,就是写一个测试文件,检查前向后向传播的数据是否正确。
neuron_layer, vision_layer
,这里的Wtf_Layer肯定是属vision_layer了,所以打开vision_layers.hpp
然后复制convolution_layer的相关代码,把类名还有构造函数的名字改为WtfLayer,如果没有用到GPU运算,那么把里面的带GPU的函数都删掉
2. 将Wtf_layer.cpp 添加到src\caffe\layers文件夹中,代码内容复制convolution_layer.cpp 把对应的类名修改(可以搜一下conv关键字,然后改为Wtf)
3. 假如有gpu的代码就添加响应的Wtf_layer.cu (这里不添加了)
4. 修改proto/caffe.proto文件,找到LayerType,添加WTF,并更新ID(新的ID应该是34)。假如说Wtf_Layer有参数,比如Convolution肯定是有参数的,那么添加WtfParameter类
5. 在layer_factory.cpp中添加响应的代码,就是一堆if ... else的那片代码
6. 这个可以不做,但是为了结果还是做一个,就是写一个测试文件,检查前向后向传播的数据是否正确。
2017-06-20
展开全部
1、首先写好你添加层的cpp和cu文件,另外在cpp文件的最后写上REGISTER_LAYER_CLASS(LAYERTYPENAME);其中LAYERTYPENAME是你定义的layer的类名,如MyInputLayer,那么就是REGISTER_LAYER_CLASS(MyInput);,注意不是MyInputLayer。
2、然后在相关的头文件里添加层类的声明
3、在proto文件里定义层的类型和message
4、在upgrade_proto.cpp里const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) {
switch (type) {}里添加相关代码case...return
5、写prototxt网络模型文件的时候要注意type的格式
2、然后在相关的头文件里添加层类的声明
3、在proto文件里定义层的类型和message
4、在upgrade_proto.cpp里const char* UpgradeV1LayerType(const V1LayerParameter_LayerType type) {
switch (type) {}里添加相关代码case...return
5、写prototxt网络模型文件的时候要注意type的格式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询