6

pycaffeインターフェイスを使用して、ネットワークのレイヤーの名前を変更する簡単な方法はありますか?

ネット手術の例を見てきましたが、必要なものの例が見つかりません。

たとえば、トレーニング済みの Caffe モデルを読み込み、conv1レイヤーの名前とそれに対応するブロブを に変更したいと思いnew-conv1ます。

4

1 に答える 1

10

直接的な方法はわかりませんが、回避策は次のとおりです。

事前トレーニング済みの Caffe モデルmy_model.caffemodelとそのネット アーキテクチャが与えられnet.prototxtます。のコピーを作成しnet.prototxt(たとえばnet_new.prototxt)、conv1レイヤーの名前を に変更します (必要に応じてとnew-conv1の名前を変更できます)。bottomtop

import caffe
net_old = caffe.Net('net.prototxt','my_model.caffemodel',caffe.TEST)
net_new = caffe.Net('net_new.prototxt','my_model.caffemodel',caffe.TEST)
net_new.params['new-conv1'][0].data[...] = net_old.params['conv1'][0].data[...]  #copy filter across 2 nets
net_new.params['new-conv1'][1].data[...] = net_old.params['conv1'][1].data[...]  #copy bias
net_new.save('my_model_new.caffemodel')
于 2016-09-21T11:53:14.210 に答える