我在python
中使用caffe.NetSpec来定义和导出架构,使用的代码如下:
conv1_1 = L.Convolution(data,top='conv1_1',name='conv1_1', convolution_param= {'kernel_size':3,'num_output':64,'pad':1}, param=[{'lr_mult':1, 'decay_mult':1}, {'lr_mult':2,'decay_mult':0}])
但是,在生成train.prototxt
时,层中出现了两个顶层blob,如下所示:
layer {name: "conv1_1"type: "Convolution"bottom: "Data1"top: "Convolution1"top: "conv1_1"param { lr_mult: 1 decay_mult: 1}param { lr_mult: 2 decay_mult: 0}convolution_param { num_output: 64 pad: 1 kernel_size: 3 }}
这里出了什么问题?谢谢
回答:
使用NetSpec()
对象怎么样?
import caffens = caffe.NetSpec() # 使用此对象来存储层ns.data, ns.label = L.Data(name='data', ntop=2, data_param={'source':'', 'batch_size': 32})ns.conv1_1 = L.Convolution(ns.data, name='conv1_1', convolution_param= {'kernel_size':3,'num_output':64,'pad':1}, param=[{'lr_mult':1, 'decay_mult':1}, {'lr_mult':2,'decay_mult':0}])print str(ns.to_proto()) # 打印存储在ns对象中的网络