3

畳み込みニューラル ネットワーク (CNN) のトレーニングに Caffe ライブラリを使用しています。ただし、concat レイヤーを使用して 2 つの畳み込みレイヤーからの出力を結合してから、inner_product レイヤーに適用すると、次のエラーが発生します。

F1023 15:14:03.867435  2660 net.cpp:788] Check failed: target_blobs[j]->shape() == source_blob->shape() Cannot share param 0 weights from layer 'fc1'; shape mismatch.  Source param shape is 400 800 (320000); target param shape is 400 400 (160000)

私の知る限り、BVLC_GoogLeNetとまったく同じ方法で連結レイヤーを使用しています。concat レイヤーは、名前の下のpastebincombinedにある私の train.prototxt にあります。入力ブロブのサイズは で256x8x7x24、Caffe のデータ形式は ですbatch_size x channels x height x width。pycaffe インターフェイスとコンソールの両方を使用してトレーニングを試みました。同じエラーが発生します。以下は、コンソールを使用したトレーニングのコードです。

solver_path = CAFFE_ROOT+'build/tools/caffe train -solver '
model_path = self.run_dir+'models/solver.prototxt'
log_path = self.run_dir+'models/training.log'

p = subprocess.Popen("GLOG_logtostderr=1 {} {} 2> {}".format(solver_path, model_path, log_path), shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

このエラーの意味は何ですか? そして、それはどのように解決できますか?

アップデート

コメントで述べたように、ログにはエラー以外は何も含まれていません。エラーのスタック トレースは次のとおりです。

@     0x7f231886e267  caffe::Net<>::ShareTrainedLayersWith()
@     0x7f231885c338  caffe::Solver<>::Test()
@     0x7f231885cc3e  caffe::Solver<>::TestAll()
@     0x7f231885cd79  caffe::Solver<>::Step()
@     0x7f231885d6c5  caffe::Solver<>::Solve()
@           0x408d2b  train()
@           0x4066f1  main

私のソルバーとコードは、ネットワークに沿って 1 つの「パス」のみを使用して、つまり CONCAT レイヤーを使用せずに、まったく同じ CNN をトレーニングする場合に正常に機能することにも注意してください。

4

1 に答える 1

1

あなたが抱えている問題は、テストネットがそうではないのに、連結レイヤーを持つようにトレインネットが更新されたことだと思います。

concatが2つの400x400レイヤーをマージすることを検討している400x400対400x800の問題を説明します。あなたのテストネットを見ることができなければ、私は確かに知ることができません.

于 2015-10-27T03:20:51.223 に答える