我可以通过名称访问网络中的blob。例如:
net.blobs['data'].data.shape
会返回上述层的形状。
有没有办法通过索引访问层?我尝试了以下方法:
net.blobs[1].data.shape
但我得到的是一个没有提供有用信息的Python异常
KeyError: 1
我需要以上述方式访问,因为在运行时,我不知道我想访问的层的名称。
有谁知道如何做到这一点吗?
回答:
net.blobs
是一个有序字典对象,因此你不能通过数字索引来访问其项目,你需要使用字符串键。
你可以通过 net.blobs.keys()
获取可用的键列表,并且你可以使用以下方式访问blob:
net.blobs[net.blobs.keys()[1]].data.shape
但在这样做时要小心:caffe可能会在你的模型中引入辅助blob(特别是当一个"top"
被作为"bottom"
输入到多个层时,会引入split
层)。