首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C++而不是prototext中初始化卷积层?

如何在C++而不是prototext中初始化卷积层?
EN

Stack Overflow用户
提问于 2019-03-05 10:55:22
回答 1查看 96关注 0票数 1

我正在尝试将caffe提供的layer类"CuDNNConvolutionLayer“导入到我自己的项目(一个纯C++项目)中。因此,我不能使用prototxt来指定层。相反,当我声明它时,我必须手动向层发送参数。(我不确定这种方式是否正确,我只是在探索)

我这样做了:

代码语言:javascript
复制
int param={20,5,1,0,1,1,???,???}; caffe::CuDNNConvolutionLayer<float> cv1(*param);

参数中的最后两个参数被设置为初始化"bias_term“(true或false)和"engine”(咖啡或CUDNN)。正如我提到的,我不能忽略这两个值,因为这不是prototxt,那么如果我想使用CUDNN引擎并且没有偏差项,我应该在这里填充什么值?(我已经将参数声明为int,所以我认为并期望答案应该是0,1-希望如此)

代码语言:javascript
复制
Operating system: ubuntu 18.04
Compiler: gcc
CUDA version (if applicable): 10.0
CUDNN version (if applicable): v7
BLAS:
Python version (if using pycaffe):
MATLAB version (if using matcaffe):
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-15 21:34:05

CuDNNConvolutionLayer构造函数接受对LayerParameter protobuf对象(而不是int*)的引用。因此,您必须使用默认构造函数创建一个空的LayerParameter对象,并使用其设置器方法向其添加必要的字段。据我所知,ProtoBuf不支持{}-style初始化。

初始化LayerParameter的另一种方法是使用其ProtoText表示形式解析字符串文字。

阅读"ProtoBuf C++ generated code"的文档会有所帮助。

此外,请查看source of Scale layer以获取创建FillerParameter和LayerParameter以构建层的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54994748

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档