2017-09-08 33 views
1

我知道一个人可以(可编程地)使用caffe.Netspec()设计一个网络,基本上主要目的是其原型文本。使用caffe.NetSpec()定义网络时,有没有办法从给定的原型文件“附加”?

net = caffe.NetSpec() 
.. (define) .. 
with open('my_network.prototoxt', 'w') as f: 
    print(net.to_proto(), file=f) 

然而,而不是从头开始,我需要追加根据给prototxt层,让我们说,base.prototxt。我想要的是类似

net = caffe.NetSpec() 
with open('base.prototoxt, 'r') as f:   
    net.from_proto(file=f)   # <== is there something like this? 
.. (append) .. 
with open('my_network.prototoxt', 'w') as f: 
    print(net.to_proto(), file=f) 

任何人都可以请指教?

回答

0

您可以加载类的模型:

model = caffe.proto.caffe_pb2.NetParameter() 
input_file = open(filename, 'r') 
text_format.Merge(str(input_file.read()), model) 
input_file.close() 
return model 

再复制层等,如:

for i in range(0, len(model.layer)): 
    new_model.layer.extend([model.layer[i]]) 

这也将工作时,你的model/new_model的类型是

model = caffe.proto.caffe_pb2.NetParameter() 

HTH。

相关问题