c++ - 通过c++ tensorflow接口获取模型的输入输出节点信息
问题描述
以下代码在 tensorflow 1.13.1 下编译失败:
GraphDef graph_def;
status = ReadBinaryProto(Env::Default(), modelPath, &graph_def);
if (!status.ok()) {
std::cerr << "ReadBinaryProto Status:" << status.ToString() << endl;
return -1;
}
cout << "success." << endl;
int a = graph_def.node_size();
int i;
for (i = 0; i < a; i++)
{
graph_def.node(i).PrintDebugString();
}
return -1;
编译错误信息
未解析的外部符号“public:class google::protobuf::internal::LogMessage & __cdecl google::protobuf::internal::LogMessage::operator<<(char const *)”(??6LogMessage@internal@protobuf@google @@QEAAAAEAV0123@PEBD@Z)
未解析的外部符号“public: void __cdecl google::protobuf::internal::LogFinisher::operator=(class google::protobuf::internal::LogMessage &)” (??4LogFinisher@ internal@protobuf@google@@QEAAXAEAVLogMessage@123@@Z)
未解析的外部符号“public: void __cdecl google::protobuf::Message::PrintDebugString(void)const” (?PrintDebugString@Message@protobuf@google@@QEBAXXZ)
未解析的外部符号“public: __cdecl google::protobuf::internal::LogMessage::LogMessage(enum google::protobuf::LogLevel,char const *,int)” (??0LogMessage@internal@protobuf@google@@QEAA @W4LogLevel@23@PEBDH@Z)
未解析的外部符号 "public: __cdecl google::protobuf::internal::LogMessage::~LogMessage(void)" (??1LogMessage@internal@protobuf@google@@QEAA@XZ)
以上所有操作都出现在visual studio 2015下。
解决方案
将编译错误消息中建议的代码添加到链接中文件的末尾。
待修改文件链接:
https ://github.com/guikarist/tensorflow-windows-build-script/blob/master/patches/tf_exported_symbols_msvc.lds
然后重新编译张量流。
整个编译过程参考以下链接。
https://blog.csdn.net/atpalain_csdn/article/details/97945536
推荐阅读
- python - 深度学习模型在非常少的数据上进行训练
- python - 为什么我与 repo.anacoda.com 的连接失败?
- python - “lambda_function”:没有名为“ask_sdk_core”的模块
- java - mvn 命令用于更新依赖项中的版本和一个使用该依赖项的项目
- javascript - Discord.js 机器人随机回合制战斗
- pandas - 输出每年的最后一行
- javascript - 类对象中的异步 indexedDB
- python - 符号集成中的 Python 与 MATLAB
- swift - 为什么有两个视图但没有容器编译?
- python - Python TensorFlow ML 文本分类。模型输出值超出范围