我在使用Caffe,我想知道是否可以单独使用其中的一个滤波器。基本上,我只需要那个滤波器的训练后的卷积核(在第一层使用)。
我在论文中找不到卷积核的公式。
如果有人能帮我解决这个问题,我将不胜感激。
如果你还能告诉我如何在Matlab版本中提取它们,我将非常感激。
谢谢
回答:
假设你有一个训练好的网络,其'deploy.prototxt'
文件定义了网络结构,训练参数存储在'my_weights.caffemodel'
文件中。
假设你感兴趣的层在'deploy.prototxt'
中定义如下:
layer { name: "conv1" type: "Convolution" bottom: "data" top: "conv1" param { lr_mult: 1 } param { lr_mult: 2 } convolution_param { num_output: 32 pad: 2 kernel_size: 5 stride: 1 }}
如你所见,该层的名称是"conv1"
,它有32个5×5大小的滤波器。
首先,你需要在Matlab中加载网络
>> net = get_net( 'path/to/deploy.prototxt', 'path/to/my_weights.caffemodel', 'test' );
一旦你加载了网络,你可以使用层的名称来访问其参数
>> w = net.params( 'conv1', 1 ).get();