假设我正在使用caffe.Netspec()
设计网络(例如,在启动时),如下所示。
import caffe
from caffe import layers as L
net = caffe.NetSpec()
net.data = ...
net.label = ...
net["conv1"] = L.convolution(...)
# ... concatenations ... and so on.
net["here"] = ...
有没有办法知道任何特定图层(例如图层here
)的blob形状,如7x7x128
?
我想直到1x1
形状,所以我需要知道到目前为止哪个形状。
答案 0 :(得分:0)
caffe.NetSpec()用于初始化网络,这意味着您自己定义网络,包括内核大小和其他参数,如stride,padding。可以根据特定图层所需的输出大小调整这些参数。 因此,了解blob大小并不会出现,因为您自己定义了所有内容。
如果您使用caffe.Net()或caffe.SGDSolver()加载预定义的网络,则可以通过net.blobs.items()访问blob。 你可以尝试这样的事情: [(k,v.data.shape)for k,v in solver.net.blobs.items()]
要熟悉CAFFE网络结构,您可以查看以下示例: https://github.com/BVLC/caffe/blob/master/examples/01-learning-lenet.ipynb
这包括如何定义网络以及如何加载网络。