2017-03-06 6 views
2

キャフェネットワークモデルの次の部分を理解しようとしています。キャフェ内のフィルタ内の値

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つのフィルタを作成できます。他のフィルタはどのように作成されますか?

答えて

1

このレイヤー(「チャンネル」シェイプ)の入力ディメンションに応じて、このレイヤーは、形状がin-dimby-5by-5の256個のフィルターを持ちます。 Caffeは平均値が0でstd = 0.01のガウス分布(正規分布)からのi.i.dランダムサンプルを用いてこれらの値をすべて(​​パラメータに従って)初期化します。

あなたは(レイヤ名が"conv1"であると仮定して)Pythonでの値を見ることができます:

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 
関連する問題