如何使用C / C ++对经过训练的神经网络进行推理?

时间:2019-04-12 12:47:16

标签: c tensorflow machine-learning neural-network deep-learning

对于我的硕士论文,我将不得不使用预构建/预训练(使用TensorFlow)的深度神经网络模型进行推断。我收到了两种不同的格式(hdf5 / h5和冻结图= .pb)。推断应在集群上完成,到目前为止,我们仅运行GPU版本(带有TensorRT和uff模型)。因此,我的第一项工作似乎是在一个群集上可以使用之前对一个CPU进行推断。

我们正在计算流体动力学(CFD)模拟中使用该模型-这也是我的学术背景,因此您可以想象我对深度学习的知识很少。无论如何,更改/训练模型不是我的工作,而只是将其用于推理。我们的CFD代码是用C ++编写的,这是我在高级级别上使用的唯一编程语言(显然,使用C没问题,但我不了解python)。

经过多次Google搜索后,我意识到我不知道如何重新开始。我认为有可能跳过所有培训和TensorFlow内容。我知道神经网络如何工作,以及它们如何根据输入值计算输出值。我也拥有最重要的理论知识,但没有该领域的编程知识。是否可以以某种方式使用他们给我的模型(因此是hdf5 / h5或冻结图),并仅使用C或C ++构建推理代码?我已经找到了C API并将其安装在docker容器(我也有Tensorflow)中,但是我真的不确定下一步是什么。我可以使用C API做什么?您将如何编写一个C / C ++代码以进行DNN模型的推理呢?

致敬并预先致谢,

tre95

1 个答案:

答案 0 :(得分:0)

Opencv提供了运行深度学习模型的工具,但它们仅限于计算机视觉领域。参见here

您可以使用opencv提供的API进行分类,对象检测,面部检测,文本检测,分割等。这些示例非常简单。

有python版本和c ++版本。