ShuffleNet在Caffe框架下的实现

本文是在实现Github上用户farmingyard贴出的加速版ShuffleNet。下面是所包含的文件:

在之前的Caffe框架使用中,只是单纯的会把别人deploy.prototxt,

train.prototxt,solver.prototxt拿来用,制作数据集跑一跑,稍微有一点变化,例如有的网络github上只给一个deploy.prototxt文件,或者是像这样还给出 .cpp .cu .hpp文件README.md又是这样的:

在写出其他两个文件以后直接巡行会出现以下问题:

下面主要就是针对这一问题进行解决。

1、相关文件的使用问题

如果只给出了一个deploy.prototxt文件,另外两个.prototxt配置文件都是需要我们使用者根据自己的情况和所给出的deploy.prototxt自己写的。

然后像这样给出

shuffle_channel_layer.cpp
shuffle_channel_layer.cu
shuffle_channel_layer.hpp

三个文件的,基本都是网络结构中自己定义的layer,是Caffe框架本身没有的,需要我们添加到Caffe框架下。

以ShuffleNet为例,具体使用步骤是将:

shuffle_channel_layer.cpp
shuffle_channel_layer.cu 

放进caffe/src/caffe/layers路径下,而

shuffle_channel_layer.hpp

放进caffe/include/caffe/layers路径下。 然后类似于函数的声明一样,我们需要在caffe/src/caffe/proto/caffe.proto文件中找到message LayerParameter{…}这条语句

在最后添加这句话:

注意,这里的164随意取,只要不和前面用过的ID重复即可:

message LayerParameter {
...
optional ShuffleChannelParameter shuffle_channel_param = 164;
...
}

然后在caffe.proto文件的最后,添加

message ShuffleChannelParameter {
  optional uint32 group = 1[default = 1]; // The number of group
}

做完上述步骤后,在caffe需要重新编译,也很简单,直接在caffe文件夹下打开命令行:

make all -j4

或者:

sudo make clean
sudo make all

如果编译caffe时出现如下问题:

主要原因是我们上一步,修改了caffe.proto文件因为我们用文本编辑器打开了文件后,文本编辑器在caffe.proto文件的开头静默插入字节顺序标记。

参考博客解决:https://blog.csdn.net/qq_38451119/article/details/81980292

解决后,开始重新编译caffe。
 

2、开始训练

在Caffe中使用ShuffleNet层:

type: "ShuffleChannel"

然后就是准备好数据集,根据deploy.prototxt文件编写好train.prototxt和solver.prototxt 就可以开始训练了!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值