pycaffeインターフェイスを使用して、カフェネットワークのレイヤーの名前を変更する簡単な方法はありますか?
ネット手術の例を見てきましたが、必要なものの例が見つかりません。
たとえば、トレーニング済みの Caffe モデルを読み込み、conv1
レイヤーの名前とそれに対応するブロブを に変更したいと思いnew-conv1
ます。
直接的な方法はわかりませんが、回避策は次のとおりです。
事前トレーニング済みの Caffe モデルmy_model.caffemodel
とそのネット アーキテクチャが与えられnet.prototxt
ます。のコピーを作成しnet.prototxt
(たとえばnet_new.prototxt
)、conv1
レイヤーの名前を に変更します (必要に応じてとnew-conv1
の名前を変更できます)。bottom
top
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')