2017-03-06 18 views
2

我想了解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和std dev 0.01我們可以創建一個過濾器,以及其他過濾器是如何創建的?

回答

1

根據此圖層的輸入尺寸(「通道」形狀),此圖層具有256個形狀爲in-dim的濾波器,通過5通過5。 Caffe初始化所有這些值(根據​​param),其中i.i.d隨機樣本來自高斯(正態)分佈,零均值和標準差= 0.01。

你可以看到蟒蛇的值(假設圖層名稱爲"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