gpt4 book ai didi

c++ - 如何在 C++ 中初始化卷积层而不是 prototxt?

转载 作者:太空宇宙 更新时间:2023-11-04 12:39:19 27 4
gpt4 key购买 nike

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

我这样做了:

int param={20,5,1,0,1,1,???,???}; caffe::CuDNNConvolutionLayer<float> cv1(*param);

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

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):

最佳答案

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

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

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

此外,检查 source of Scale layer有关创建 FillerParameter 和 LayerParameter 以构建图层的示例。

关于c++ - 如何在 C++ 中初始化卷积层而不是 prototxt?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54994748/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com