Machine learning 如何在pycaffe中生成客户池层协议?
我的目标是通过以下代码实现池层prototxt:Machine learning 如何在pycaffe中生成客户池层协议?,machine-learning,neural-network,deep-learning,caffe,pycaffe,Machine Learning,Neural Network,Deep Learning,Caffe,Pycaffe,我的目标是通过以下代码实现池层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_Custom和pooling_Custom_par
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)
但是,我无法生成池\u自定义\u参数
。我怎么做?我目前的结果是
layer {
name: "my_pooling"
type: "Pooling_Custom"
bottom: "conv1"
top: "my_pooling"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
engine : CAFFE
}
}
如果您是作为池的子类型执行此操作,则不能执行此操作:这些属性名称由父模板定义。您可以更改的只是值(每个项目的右侧,冒号之后) 功能上的原因是,您正在合并来自父类的方法,这些父类中的字段名是硬编码的。例如,将有一些引用池参数[“内核大小”]。如果您已将名称更改为“pooling_custom_param”,则还需要重新配置该软件。。。这超出了语言的软件实现
如果您确实需要更改该属性名称,欢迎您克隆整个池类,进行更改,并实例化新类的层。谢谢。实际上,我使用的是Caffe的修改版本。在这个版本中,我使用
pooling\u custom\u param
来定义pooling参数。我的caffe版本使用pooling\u custom\u param
与我的设置一起工作。在我的问题中,我的重点是使用caffe.NetSpec()
从python脚本生成prototxt。这不可能吗?我不知道--“Caffe的修改版”没有告诉我它是如何修改的。显然,你有一个手工修改过的版本。如果NetSpec没有进行类似的修改,我认为您无法生成所需的标签;您必须向NetSpec添加功能来处理这种更改。