我试图理解caffe网络模型中的以下部分。
convolution_param {
num_output: 256
pad: 2
kernel_size: 5
group: 2
weight_filler {
type: "gaussian"
std: 0.01
}
bias_filler {
type: "constant"
value: 1
}
}
据我所知,这一层使用了256个过滤器。 我想知道如何选择这些过滤器中的值? 使用大小5x5和std dev 0.01,我们可以创建一个过滤器,如何创建其他过滤器?
答案 0 :(得分:1)
根据此图层的输入尺寸(“通道”形状),此图层具有256个形状为in-dim
的滤镜 - 按 - 5
- 按 - 5
。 Caffe使用来自高斯(正态)分布的i.i.d随机样本初始化所有这些值(根据weight_filler
param),零均值和std = 0.01。
您可以在python中看到值(假设图层名称为"conv1"
):
import caffe
net = caffe.Net('/path/to/net.prototxt', caffe.TEST)
layer_idx = list(net._layer_names).index('conv1')
weights = net.layers[layer_idx].blobs[0].data
print "filter values =", weights