我的目标是从代码中实现池化图层原型,如下所示:
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_Custom
和pooling_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
}
}
答案 0 :(得分:0)
如果您将此作为池化的子类型,则不能:这些属性名称由父模板定义。您可以更改的是值(每个项目的右侧,冒号后面)。
功能性原因是您要合并父类中的方法,其中这些字段名称是硬编码的。例如,会有一些东西引用 pooling_param [“kernel_size”] 。如果您已将名称更改为 pooling_custom_param ,则还需要重新配置该软件......这超出了语言的软件实现。
如果确实需要更改该属性名称,欢迎您克隆整个Pooling类,进行更改并实例化该新类的图层。