2017-07-19 10 views
0

frozen_model.pbをテンソルフローC++でインポートしようとしています。私はグラフ内のすべてのノードが正しくインポートされているかどうかチェックしたい。私はノード名を印刷しようとしていた使用例hereを見つけました。私は次のコードスニペットを使用しています。C++ tensorflow:ノード名の印刷中にエラーが発生しました

int node_count = graph_def.node_size(); 
for (int i = 0; i < node_count; i++) { 
    auto n = graph_def.node(i); // <-- error here 
    cout<< n.name(); 
} 

コメント(ここではエラー)を含む行が実行されます。それは私に奇妙なエラーを投げます。ここでは完全なエラーです。

CMakeFiles/c++.dir/main.cc.o: In function `google::protobuf::RepeatedPtrField<tensorflow::NodeDef>::TypeHandler::Type const& google::protobuf::internal::RepeatedPtrFieldBase::Get<google::protobuf::RepeatedPtrField<tensorflow::NodeDef>::TypeHandler>(int) const': 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0x3a): undefined reference to `google::protobuf::internal::LogMessage::LogMessage(google::protobuf::LogLevel, char const*, int)' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0x50): undefined reference to `google::protobuf::internal::LogMessage::operator<<(char const*)' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0x68): undefined reference to `google::protobuf::internal::LogFinisher::operator=(google::protobuf::internal::LogMessage&)' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0x7c): undefined reference to `google::protobuf::internal::LogMessage::~LogMessage()' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0xb1): undefined reference to `google::protobuf::internal::LogMessage::LogMessage(google::protobuf::LogLevel, char const*, int)' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0xc7): undefined reference to `google::protobuf::internal::LogMessage::operator<<(char const*)' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0xdf): undefined reference to `google::protobuf::internal::LogFinisher::operator=(google::protobuf::internal::LogMessage&)' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0xf3): undefined reference to `google::protobuf::internal::LogMessage::~LogMessage()' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0x12a): undefined reference to `google::protobuf::internal::LogMessage::~LogMessage()' 
main.cc:(.text._ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi[_ZNK6google8protobuf8internal20RepeatedPtrFieldBase3GetINS0_16RepeatedPtrFieldIN10tensorflow7NodeDefEE11TypeHandlerEEERKNT_4TypeEi]+0x14f): undefined reference to `google::protobuf::internal::LogMessage::~LogMessage()' 
collect2: error: ld returned 1 exit status 
make[2]: *** [../bin/c++] Error 1 
make[1]: *** [CMakeFiles/c++.dir/all] Error 2 
make: *** [all] Error 2 

私は21あるnode_sizeの正しい数を取得します。私は@のmrryさんのコメントの助けを借りてpython

enter image description here

+1

どのようにそのプログラムを構築していますか? 'libprotobuf'がリンクされていないようです。 – mrry

+0

私はこのリポジトリhttps://github.com/cjweeks/tensorflow-cmakeを使ってプロジェクトをセットアップしました。なぜなら、cmakeを使ってC++プロジェクトをビルドしたかったからです – Mj1992

答えて

0

に同じfrozen_graph.pbのノードをインポートし、印刷されたとして、あなたはここで見ることができます。私はrepositoryの中に与えられたFindProtoBuf.cmakeファイルを含めて、私のCMakeLists.txtの中に手動でlibprotobufをリンクさせました。 CMakeLists.txtと同じディレクトリにコピーして、thisのコマンドに従って、cmakeにProtoBufを含める方法を回答しました。

関連する問題