caffe2转换DenseNet-Caffe的权值文件时报错“has no field named ceil_mode”

本文介绍了解决Caffe2中出现Ceil_Mode错误的方法。错误源于DenseNet-Caffe使用的ceil_mode操作不被Caffe2支持。解决方式为修改并编译caffe.proto文件,再编译Caffe2即可。

原因分析

出现该错误的原因是DenseNet-Caffe中用到了ceil_mode操作,由于master版本的caffe中并不支持该操作,而Caffe2中的caffe.proto文件又是直接从caffe-master中拷贝过来的,故产生了该错误。

解决方法

该错误在caffe中也会遇到,在caffe中的解决办法是修改源码,然后重新编译caffe。具体可以参考这篇博客。但caffe2中貌似并没有跟caffe一样的源码文件,不过可以通过将重新编译好的caffe.proto替换caffe2/caffe/proto目录下的同名文件,然后再重新编译caffe2加以解决。

重新编译caffe2之前,最好在caffe2主目录下用rm -rf /build先将caffe2/build目录下的文件清空,然后在执行下面的编译命令(假定caffe2的相关依赖库已安装好,如未安装好请参考caffe2的安装教程)重新编译caffe2应该就可以支持ceil_mode模式了。

# This will build Caffe2 in an isolated directory so that Caffe2 source is
# unaffected
mkdir build && cd build

# This configures the build and finds which libraries it will include in the
# Caffe2 installation. The output of this command is very helpful in debugging
cmake ..

# This actually builds and installs Caffe2 from makefiles generated from the
# above configuration step
sudo make install

PS:如果有需要DenseNet的pkl权值文件用于在Detectron中使用DenseNet的,可以在这里下载我转换好了的densenet预训练模型,顺便帮忙点个赞^_^

在使用 Caffe 框架定义网络结构,如果遇到类似 `Message type "caffe.ConvolutionParameter" has no field named "pad_l"` 的错误,通常是因为在 `.prototxt` 文件中定义的卷积层参数与 Caffe 当前支持的字段不一致。 Caffe 的 `ConvolutionParameter` 支持 `pad` 字段,但不支持 `pad_l`。如果尝试使用 `pad_l`,会触发字段未定义的错误[^1]。正确的做法是使用 `pad` 来统一设置四周的填充大小,或者使用 `pad_h` 和 `pad_w` 来分别指定高度和宽度方向的填充量。 ### 示例:正确配置卷积层的 pad 参数 以下是一个 `.prototxt` 文件中卷积层的配置示例: ```protobuf layer { name: "conv1" type: "Convolution" bottom: "data" top: "conv1" convolution_param { num_output: 64 kernel_size: 3 stride: 1 pad: 1 # 正确设置 pad 参数,代替 pad_l } } ``` 如果需要分别设置上下左右的填充,可以使用 `pad_h` 和 `pad_w` 来定义垂直和水平方向的填充: ```protobuf layer { name: "conv2" type: "Convolution" bottom: "conv1" top: "conv2" convolution_param { num_output: 128 kernel_size: 3 stride: 1 pad_h: 1 pad_w: 1 } } ``` ### 字段说明 - `pad`: 用于统一设置卷积层在输入特征图四周的填充大小。 - `pad_h`: 用于单独设置输入特征图在垂直方向(上下)的填充大小。 - `pad_w`: 用于单独设置输入特征图在水平方向(左右)的填充大小。 这些字段是 Caffe 官方支持的字段,任何试图使用未定义的字段(如 `pad_l`)都会导致解析 `.prototxt` 文件失败。 ### 注意事项 - 确保 `.prototxt` 文件中的字段与 Caffe 的 `caffe.proto` 文件定义一致。 - 如果需要更复杂的填充行为,可能需要通过自定义层或修改源码来实现。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值