python-Caffe-draw_net_to_file-“分类器”对象没有属性“名称”

我在draw.py中找到了draw_net_to_file方法,并希望使用它来了解我可以更好地使用的Caffe网络.

问题是以下代码

import caffe
from caffe.draw import draw_net_to_file
import numpy as np

weights = 'reference_model/caffe_reference_imagenet_model.weights'
means = 'reference_model/ilsvrc_2012_mean_reshaped.npy'
model = 'reference_model/imagenet_model_deploy.prototxt'

npmeans = np.load(means)

cls = caffe.Classifier(
    model,
    weights,
    mean=npmeans,
    image_dims=(256, 256),
    channel_swap=(2,1,0),
    raw_scale=(255),
)

draw_net_to_file(cls, "drawn_net.png");
print "DONE"

失败并显示以下错误

/caffe/python/caffe/draw.pyc in get_pydot_graph(caffe_net, rankdir, label_edges)
--> 105   pydot_graph = pydot.Dot(caffe_net.name, graph_type='digraph', rankdir=rankdir)
AttributeError: 'Classifier' object has no attribute 'name'

经过仔细研究,分类器对象实际上并未公开基础Net对象的许多方法,例如名称.在这种情况下,如何实例化一个正常工作的Net实例?

我正在使用从版本737ea5e936821b5c69f9c3952d72693ae5843370构建的Caffe.

解决方法:

看一下脚本draw_net.py,您可以在其中看到如何使用draw.py函数的示例. net参数与caffe.Net对象并不完全相同,而是经过解析的原型:

from google.protobuf import text_format
import caffe.draw
from caffe.proto import caffe_pb2

net = caffe_pb2.NetParameter()
text_format.Merge(open(args.input_net_proto_file).read(), net)
上一篇:CV2——学习笔记-图像分类


下一篇:caffe网络在多线程中无法使用GPU的解决方案 | cpp caffe net run in multiple threads