如何在pycaffe中生成客户池层原型文件?

时间:2017-04-07 12:15:07

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

我的目标是从代码中实现池化图层原型,如下所示:

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
  }
}

1 个答案:

答案 0 :(得分:0)

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

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

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