畳み込みニューラル ネットワーク (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 をトレーニングする場合に正常に機能することにも注意してください。