私はカフェモデルの畳み込み層のサイズを変更しようとしています(これはthis questionへのフォローアップの質問です)。 how to do net surgeryに関するチュートリアルがありますが、1つのカフェモデルから同じサイズの別のカフェモデルに重量パラメータをコピーする方法のみを示しています。
代わりに、私はそれが現在(X 3
X 3
X 3
64
)から(X 3
X 4
X 3
64
)にそのサイズを変更するような私の畳み込みフィルターに新しいチャンネル(すべて0)を追加する必要があります。ネット手術:caffeodelファイルの畳み込み層をcaffeで再形成する方法は?
畳み込みレイヤーが'conv1'
となっているとします。これは私がこれまで試したものです:
# Load the original network and extract the fully connected layers' parameters.
net = caffe.Net('../models/train.prototxt',
'../models/train.caffemodel',
caffe.TRAIN)
今、私はこれを行うことができます。
net.blobs['conv1'].reshape(64,4,3,3);
net.save('myNewTrainModel.caffemodel');
しかし、保存されたモデルが変更されていないようです。私は畳み込みの実際の重さがよりもnet.blobs
に格納されているが、net.params
オブジェクトを再形成する方法を理解できないことを読んだ。誰にもアイデアはありますか?
感謝を。あなたは本当に私をたくさん助けました!しかし、今後もいくつか質問が残るかもしれません;) – mcExchange