Caffe - draw_net_to_file - 'Classifier' 对象没有属性 'name'
Caffe - draw_net_to_file - 'Classifier' object has no attribute 'name'
我在 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'
经过仔细调查,Classifier
对象确实没有暴露底层 Net
对象的许多方法,例如 name
。对于这种情况,我如何实例化一个正确工作的 Net
实例?
我正在使用从修订版 737ea5e936821b5c69f9c3952d72693ae5843370
构建的 Caffe。
查看脚本 draw_net.py
,您可以在其中查看如何使用 draw.py
函数的示例。 net
参数与 caffe.Net
对象不完全相同,而是经过解析的 prototxt:
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)
我在 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'
经过仔细调查,Classifier
对象确实没有暴露底层 Net
对象的许多方法,例如 name
。对于这种情况,我如何实例化一个正确工作的 Net
实例?
我正在使用从修订版 737ea5e936821b5c69f9c3952d72693ae5843370
构建的 Caffe。
查看脚本 draw_net.py
,您可以在其中查看如何使用 draw.py
函数的示例。 net
参数与 caffe.Net
对象不完全相同,而是经过解析的 prototxt:
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)