【问题标题】:How to generate customer Pooling layer prototxt in pycaffe?如何在pycaffe中生成客户池化层prototxt?
【发布时间】:2017-04-07 12:15:06
【问题描述】:

我的目标是通过如下代码实现一个池化层prototxt:

layer {
  name: "my_pooling"
  type: "Pooling_Custom"
  bottom: "conv1"
  top: "my_pooling"
  pooling_custom_param {
    pool: MAX
    kernel_size: 2
    stride: 2
    engine : CAFFE
  }
}

Pooking_Custompooling_custom_param 是我的修改池。我想使用 python 来生成上面的输出。我正在使用 NetSpec 来做到这一点:

from caffe import params as P
n = caffe.NetSpec()
my_pooling = L.Pooling(conv1, type="Pooling_Custom",  pool=P.Pooling.MAX, kernel_size=2, stride=2, engine=1)

但是,我无法生成 pooling_custom_param。我该怎么做?我目前的结果是

layer {
  name: "my_pooling"
  type: "Pooling_Custom"
  bottom: "conv1"
  top: "my_pooling"
  pooling_param {
    pool: MAX
    kernel_size: 2
    stride: 2
    engine : CAFFE
  }
}

【问题讨论】:

    标签: machine-learning neural-network deep-learning caffe pycaffe


    【解决方案1】:

    如果您将其作为 Pooling 的子类型,则不能:这些属性名称由父模板定义。您可以更改的只是值(每个项目的右侧,冒号之后)。

    功能原因是您正在合并父类中的方法,其中这些字段名称是硬编码的。例如,会有一些引用 pooling_param["kernel_size"] 的东西。如果您已将名称更改为 pooling_custom_param,您还需要重新配置该软件……这超出了该语言的软件实现范围。

    如果您真的需要更改该属性名称,欢迎您克隆整个 Pooling 类,进行更改并实例化该新类的层。

    【讨论】:

    • 谢谢修剪。实际上,我使用的是 Caffe 的修改版本。在版本中,我使用pooling_custom_param 来定义池化参数。我的 caffe 版本使用 pooling_custom_param 与我的设置配合使用。在我的问题中,我专注于使用 caffe.NetSpec() 从 python 脚本生成 prototxt。不可能吗?
    • 我不知道——“Caffe 的修改版”并没有告诉我如何修改它。显然,您有一个可以使用的手动修改版本。如果 NetSpec 没有进行类似的修改,我认为您无法生成您想要的标签;您必须向 NetSpec 添加功能来处理该更改。
    猜你喜欢
    • 1970-01-01
    • 2018-09-23
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多