2016-08-10 4 views
2

私は、事前学習モデルのサイズ3x3x3のレイヤーcon_1の学習ウェイトを、新しいレイヤー 'con_1_1'にコピーして、新しいレイヤーのサイズが6x3x3になるようにしようとしています6チャンネル)。私は実際には、サイズ3x3x3のウエイトを6x3x3に複製しようとしています。 pycaffeを使ってどうすればいいですか?ネット手術pycaffeコピーウェイトと再形成

 layer name: 'con_1' 
     size: 3x3x3 

     new layer name: 'con_1_1' 
     size: 6x3x3 

     con_1_1 should be [con_1, con_1] % just concatenation of two con_1 weights 

答えて

5

.prototxtファイルと.caffemodelファイルを使用してネットワークを読み取る必要があります。その後、元のネットワークの変数を変数にコピーし、編集したネットワークにコピーします。

net = caffe.Net('path/to/conv.prototxt', 'path/to/conv.caffemodel', caffe.TEST) 
W = net.params['con_1'][0].data[...] 
b = net.params['con_1'][1].data[...] 

net = caffe.Net('path/to/conv2.prototxt', 'path/to/conv2.caffemodel', caffe.TEST) 
W_1 = numpy.concatenate(W, W, axis=2) 
b_1 = numpy.concatenate(b, b, axis=0) 
net.params['con_1_1'][0].data[...] = W_1 
net.params['con_1_1'][1].data[...] = b_1 

は、より多くの情報のため、このlinkこのlinkを見てください。

関連する問題