我正在进行一些优化,以使Convolution层和完全连接层快速工作 . 我需要预训练的Alex Net模型的卷积核重量,以便用实际图像执行卷积 .
我尝试通过编写一个简单的python代码来提取第一个Convolution层的内核参数 .
# Load the original network and extract the fully connected layers' parameters.
import caffe
import sys
f1=open('./testfile', 'w')
net = caffe.Net('models/bvlc_alexnet/deploy.prototxt',
'/media/ubuntu/sdcard/bvlc_alexnet.caffemodel',
caffe.TEST)
print >> f1, net.params['conv1'][0].data
这给了我Alex Net第一层的内核权重,但是内核的大小存在差异 .
我的输出文件是这样的
[[[[ -2.83153467e-02 -6.76262565e-03 1.69464536e-02 ...,
-1.89594068e-02 -1.02251852e-02 6.16483716e-03]
[ -3.29505093e-02 -1.28040602e-02 1.36566022e-02 ...,
-2.06015427e-02 -3.66760854e-04 2.51943078e-02]
[ -3.83224562e-02 -1.63374413e-02 1.71793532e-02 ...,
-2.37888489e-02 1.93770428e-03 3.10342778e-02]
...,
[ -1.32519063e-02 1.20311677e-02 1.48218526e-02 ...,
-1.09308660e-02 1.10638803e-02 3.24864089e-02]
[ -1.22069763e-02 8.22285190e-03 1.70185007e-02 ...,
-8.42322689e-03 1.14848586e-02 3.08694635e-02]
[ -3.33898212e-03 1.44736944e-02 9.51856188e-03 ...,
-1.00268638e-02 6.68688724e-03 2.11901478e-02]]
由于我们在alex net的第一个卷积层中有96个大小(11 * 11 * 3)的内核,因此预期的输出是96个内核(11 * 11 * 3) .
我没有为第二个甚至第三个卷积层获得适当的权重 .
1 回答
我能够获得卷积内核权重,问题在于记事本文件的大小 .
这是我修改过的代码,我在循环中逐个打印内核权重 .
我得到了96个大小为11 * 11 * 3的内核 .