如何提取第一层训练好的caffe kernels filter
How to extract trained caffe kernels filter of the first layer
我正在使用 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();
我正在使用 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();