我使用Python代码进行train.prototxt
创建,并希望删除loss
图层以自动创建deploy.prototxt
。但是,我只知道用这样的整数删除图层的方法:
net_param = deploy_net.to_proto()
del net_param.layer[0]
是否有可能按名称删除图层? Python API的文档在哪里?我真的找不到它。我只需要查看C ++代码并尝试将其转换为Python代码吗?
修改
我正在用。初始化网。
net = caffe.NetSpec()
答案 0 :(得分:1)
net.layer_dict
是所有图层的字典。所以要删除你可以这样做:
del net.layer_dict['layer_name'];
您可以查看pycaffe.py
以获取Python Api的详细信息。
答案 1 :(得分:0)
作为this答案的替代方法,您还可以执行以下操作来添加force_backward=true
并从deploy.prototxt
文件中删除任何图层,而无需修改原始文件:
from caffe.proto import caffe_pb2
from google.protobuf import text_format
model = caffe.io.caffe_pb2.NetParameter()
text_format.Merge(open(model_path + 'deploy.prototxt').read(), model)
model.force_backward = True
model.layer.remove(model.layer[-1]) # remove the last layer 'prob' for example
open(model_path + 'tmp.prototxt', 'w').write(str(model))
net = caffe.Net(model_path + 'tmp.prototxt', model_path + 'model.caffemodel', caffe.TEST)