c++ - 如何在 C++ 中调用 tensorflow::NewSession

标签 c++ tensorflow

我正在使用 c++ 加载和运行 tensorflow 图。 tensorflow 版本是 2.1 cpu。我已经包含了必要的头文件和库 _pywrap_tensorflow_internal.lib

我用

unique_ptr<tensorflow::Session> session_inception(tensorflow::NewSession(SessionOptions()));

创建一个新 session 。编译没有错误。

但是当我构建可执行文件时,有一个链接错误说 NewSession 是一个未解析的外部符号。我猜函数“NewSession”不在库文件“_pywrap_tensorflow_internal.lib”中。

如何在 C++ 环境中调用 NewSession?或者可能使用新的 API 来运行图形(而不是使用 session )?非常感谢你。

最佳答案

我假设您从 2016 年开始使用此代码:https://gist.github.com/kyrs/9adf86366e9e4f04addb我通过谷歌搜索“session_inception”找到了它。此代码早于 TensorFlow 2.1 和 2.0(于 2019 年 9 月发布)。

TensorFlow 2.1 文档没有列出任何名为 Session 的函数或类型。或 NewSession - 我不是 TensorFlow 用户,但我认为 ClientSession是您想要的当前类型。

这是 TensorFlow 2.1 文档中的示例代码

Scope root = Scope::NewRootScope();
auto a = Placeholder(root, DT_INT32);
auto c = Add(root, a, {41});

ClientSession session(root);
std::vector outputs;

Status s = session.Run({ {a, {1}} }, {c}, &outputs);
if (!s.ok()) { ... }  

也就是说,如果您想从 2016 年 3 月开始运行此代码,您应该下载最接近该日期发布的 TensorFlow 版本,即版本 v0.7.1。可在此处获取:https://github.com/tensorflow/tensorflow/releases/tag/v0.7.1 - 这可能是不可取的,因为 TensorFlow 的文档网站只有 v1.0 之后发布的版本的文档

顺便说一句,我假设您对使用 C++ 工作还比较陌生,因为我在几秒钟内就很快找到了这些信息——如果您这样做了,您就不会将此问题发布给 SO。如果您没有使用 C++ 或 TensorFlow 的经验,那么我建议您不要涉足过时和不受支持的 C++ 库,因为如果出现任何问题,您将成为 SOL - 事情会出错,尤其是在发布版本中TensorFlow 的。

关于c++ - 如何在 C++ 中调用 tensorflow::NewSession,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60557301/

相关文章:

c++ - 如何运行这个简单的 C++ 程序?

C++ TensorFlow SoftmaxCrossEntropWithLogits 返回(成本,梯度),如何访问成本?

python - 如何复制 tensorflow 层?

opencv - Opencv输出中的输出重叠

tensorflow - Keras 中的权重和可训练变量相同吗?

c++ - 使用 SDL2 和 OpenGL 旋转相机和三角形绘制不会显示任何内容?

c++ - VTKActor 在渲染后不可见但在相机->resetview() 上可见

C++ GDB Python pretty-print 教程?

c++ - 如何知道命令行中是否提供了 gflag

python - 如何通过将base64图像传递给重新训练的初始模型来获得gcloud预测?