caffe 过滤器中的值

Values inside filters in caffe

我正在尝试理解 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 和标准开发 0.01 我们可以创建一个过滤器,如何创建其他过滤器?

根据该层的输入维度("channel" 形状),该层有 256 个形状为 in-dim-by-5-by-5 的过滤器. Caffe 初始化所有这些值(根据 weight_filler 参数),其中 i.i.d 随机样本来自均值为零且标准差为 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