首页 > 编程知识 正文

bluff cliff区别,blf是什么

时间:2023-05-04 23:43:02 阅读:220608 作者:1689

一.net.blob实际上是有序字典有序字典 print net.blob

output:

OrderedDict([('data', <caffe._caffe.Blob object at 0x7f0dfffa2d70>), ('conv1', <caffe._caffe.Blob object at 0x7f0dfffa2b90>), ('pool1', <caffe._caffe.Blob object at 0x7f0dfffa2ed8>), ('norm1', <caffe._caffe.Blob object at 0x7f0dfffa2e60>), ('conv2', <caffe._caffe.Blob object at 0x7f0dfffa2aa0>), ('pool2', <caffe._caffe.Blob object at 0x7f0dfffa2938>), ('norm2', <caffe._caffe.Blob object at 0x7f0dfffa28c0>), ('conv3', <caffe._caffe.Blob object at 0x7f0dfffa29b0>), ('conv4', <caffe._caffe.Blob object at 0x7f0dfffa27d0>), ('conv5', <caffe._caffe.Blob object at 0x7f0dfffa2b18>), ('pool5', <caffe._caffe.Blob object at 0x7f0dfffa2848>), ('fc6', <caffe._caffe.Blob object at 0x7f0dfffa2758>), ('fc7', <caffe._caffe.Blob object at 0x7f0dfffa2cf8>), ('fc8', <caffe._caffe.Blob object at 0x7f0dfffa2c80>), ('prob', <caffe._caffe.Blob object at 0x7f0df16c0758>)])

可以看出blob是一个OrderedDict,即有序字典,这个有序字典的key值分别是data,conv1,pool1,norm1等等----即不同层的名字

这个有序字典key所对应的是一个blob对象

print net.blob['data']

output:  

<caffe._caffe.Blob object at 0x7f0df2f45f50>

然后这个blob对象里面有属性就是两个个四维数组,数组的维度是:维度是:(num,channels,height,width)

这个维度如下:

print net.blob['data'].data.shape

output:

(10, 3, 227, 227)

这个维度由deploy.prototxt中的输入数据维度定义的

每个数组里保存了data和gradient:

net.blobs['data'].data.shape # >> (64, 1, 28, 28)net.blobs['data'].diff.shape # >> (64, 1, 28, 28) net.blobs['conv1'].data.shape # >> (64, 20, 24, 24)net.blobs['conv1'].diff.shape # >> (64, 20, 24, 24) net.blobs['ip1'].data.shape # >> (64, 500)net.blobs['ip1'].diff.shape # >> (64, 500)

 

二.net.layers:主要是用来保存weights和bias

同理,net.layers是一个对象,如下:

<caffe._caffe.LayerVec object at 0x7f0df16bfc20>

layers对象里面的一个属性blobs,如blobs[0]还是一个对象:

<caffe._caffe.Blob object at 0x7f0e1bac5d70>

这个blobs对象的属性data就是数据了,分别保存weights和bias

这是layers的第一层,第一层为数据层所以没有weights和bias,输出len为0

len(net.layers[0].blobs) # >> 0

看第二层:可以看到blobs[0]是里面的data属性是一个四维数组,且保存的是权重

blobs[1]的data属性也是一个四维数组,里面保存的是bias
 

len(net.layers[1].blobs) # >> 2 net.layers[1].blobs[0].data.shape # >> (20, 1, 5, 5) conv1 weightsnet.layers[1].blobs[1].data.shape # >> (20,) bias

net.params还没有去细研究:

以后如果要用到再细细研究:

添加代码如下:

print net.params['conv1'][0].data.shape # (20, 1, 5, 5) conv1 weightsprint net.params['conv1'][1].data.shape # (20,) bia

参考:https://blog.csdn.net/wonengguwozai/article/details/54376046

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。