caffe.protoで変数を定義すると「'xxxParameter'has no member named'xxx'」という問題の解決

847 ワード

caffe.protoのメッセージにメンバー変数を追加する場合は、大文字は避けたほうがいいです.コンパイル中にmessageのメンバー変数名が自動的にすべてのアルファベットを小文字にします.C++コードで大文字の変数がまだ使用されている場合、定義が見つからないという問題が発生します.
たとえば、caffe.protoのAccuracyParameter定義:
optional uint32 top_K = 1 [default = 1]; //K  

C++コードでは次のように使用されます.
this->layer_param_.accuracy_param().top_K();  //K  

「AccuracyParameter」has no member named'top_K’の問題.この場合、正しい方法は次のとおりです.
this->layer_param_.accuracy_param().top_k();  //k  

違いは変数名の大文字と小文字の問題です.