问题标签 [tensorflow-c++]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
tensorflow - tensorflow 消耗的 GPU 内存是否完全等于所需的
我使用 tensorflow c++ 版本进行 CNN 推理。我已经set_allow_growth(true)
,但它仍然消耗比实际需要更多的 GPU 内存。
set_per_process_gpu_memory_fraction
只能设置GPU显存的上限,但不同的CNN模型有不同的上限。有没有解决问题的好方法
tensorflow - C++中的Tensorflow:成功读取LSTM编码器解码器模型的协议缓冲区
我已经调试这个问题一段时间了。我开发了一个 LSTM 编码器解码器模型,我计划在 C++ 中部署它。
以.pb文件格式保存模型后,我可以导入模型和数据并将其部署在 python 中。但是,当我尝试使用 C++ API 导入图形时,该函数TF_GraphImportGraphDef()
返回错误代码TF_NOT_FOUND。我怀疑,这是因为我使用的是光束搜索方法,并且 op 的符号GatherTree
不包含在tensorflow.dll/lib
我在 windows 上使用 Bazel 生成的符号中。
我想知道是否有人以前遇到过此问题或对此问题有任何解决方案。
链接到_beam_search_ops.dll
是一个可能的解决方案吗?我也尝试过TF_LoadLibrary()
使用c_api.h
. 但是,我无法加载库。
任何输入将不胜感激。另外,我正在使用 tensorflow 1.14 版。
c++ - TF_NewTensor 分段错误:可能的错误?
我正在使用 Tensorflow 2.1 git master 分支(提交 id:db8a74a737cc735bb2a4800731d21f2de6d04961)并在本地编译它。使用 C API 进行调用TF_LoadSessionFromSavedModel
,但似乎出现分段错误。我已经设法深入了解下面示例代码中的错误。
TF_NewTensor
调用崩溃并导致分段错误。
但是,当我TF_Tensor** InputValues = (TF_Tensor**)malloc(sizeof(TF_Tensor*)*1);
在通话后移动时TF_NewTensor
,它不会崩溃。如下所示:
这是一个可能的错误还是我用错了?我不明白malloc
q 自变量如何导致分段错误。
任何人都可以复制吗?
我正在使用 gcc (Ubuntu 9.2.1-9ubuntu2) 9.2.1 20191008 进行编译。
更新:
可以进一步简化错误如下。这甚至没有InputValues
被分配。
编译
gcc -I<tensorflow_path>/include/ -L<tensorflow_path>/lib test.c -ltensorflow -o test2.out
解决方案
正如 Raz 指出的那样,传递空deallocater
而不是 NULL,并且ndata
应该是字节大小。
在这里查看我的 Github 上运行/编译 TensorFlow 的 C API 的完整代码
c++ - TensorFlow C API 选择 GPU
我正在使用 Tensorflow C API 运行在 python 中保存/冻结的模型。我们曾经在 CPU 上运行这些模型,但最近切换到 GPU 以提高性能。为了与 C API 交互,我们使用了一个名为 CPPFlow ( https://github.com/serizba/cppflow ) 的包装库。我最近更新了这个库,以便我们可以传入 GPU 配置选项,以便我们可以控制 GPU 内存分配。但是,我们现在也有具有多个 GPU 的系统,这会导致一些问题。似乎我无法让 Tensorflow 使用与我们的软件相同的 GPU。
我使用与我们的软件具有相同 GPU ID 的 visible_device_list 参数。如果我将我们的软件设置为在设备 1 上运行,并将 Tensorflow 设置为在设备 1 上运行,Tensorflow 将选择设备 2。如果我将我们的软件设置为使用设备 1,而 Tensorflow 使用设备 2,则这两个软件都使用相同的 GPU。
Tensorflow 如何订购 GPU 设备,我是否需要使用其他方法手动选择设备?我看到的每个地方都表明可以使用 GPU Config 选项来完成。
c++ - 如何在单核、单线程 CPP 上运行 Tensorflow?
我正在尝试限制 TensorFlow 生成的线程数。在 python 中,我知道我们需要使用此处指出的以下步骤。我试图在 CPP 中做同样的事情,但看起来并不那么简单。问题:
- 如何正确修改intra_op_parallelism_threads和inter_op_parallelism_threads?
- 如何修改 device_count 来控制核心?
c - TensorFlow C API 日志记录设置
我试图在加载保存的模型时抑制 C-API 中张量流的日志记录。日志看起来像这样
下面是我加载保存模型的代码部分
由于关于 TF C-API 的文档很少,我现在陷入了这个问题。有人知道怎么做吗?
c++ - 使用 C Api version2.3 加载 Tensorflow 保存的模型
我有一个由 python TF V2.3 生成的 .pb 模型文件。当我尝试使用 C api 加载它时,它会抛出错误 what(): Invalid GraphDef。目前的 C/Cpp api 是否支持加载 V2.3 生成的模型? 在此处输入图像描述
c++ - 如何从源代码构建单线程 TensorFlow 2.x
从源代码构建 TensorFlow 2.x(用于 CPU)时,我应该进行哪些更改以强制 TensorFlow不使用超过 1 个线程?如果这是不可能的,我应该更改哪些特定的 c++ 语句(以及在哪些 cpp 文件中)以抑制多线程的生成?
无论 CPU/内核的数量是多少,我总共需要 1 个来自 TensorFlow 2.x 的线程。
用于top -H -b -n1 | grep program_name | wc -l
计算线程总数。