将在 tensorflow 中训练的神经网络部署到 Torch C++ 的最佳方法是啥?
Posted
技术标签:
【中文标题】将在 tensorflow 中训练的神经网络部署到 Torch C++ 的最佳方法是啥?【英文标题】:What is the best way of deploying a neural network trained in tensorflow to torch C++?将在 tensorflow 中训练的神经网络部署到 Torch C++ 的最佳方法是什么? 【发布时间】:2020-05-13 13:53:18 【问题描述】:我正在做一个项目,我需要使用 PyTorch 在 C++ 中转发网络。网络的权重需要从 Tensorflow 训练的模型中导入。我将使用 Torch 编写网络的 C++ 版本,但由于某些问题,我无法在 Torch 中训练网络。我可以使用哪些方法来做到这一点?
【问题讨论】:
如果有疑问,通用(虽然有时很慢)持久存储是文本。 【参考方案1】:要尝试的事情:
-
使用一些转换器将 TensorFlow 模型转换为 ONNX/TensorRT/其他任何东西。然后可以将 ONNX 转换为 PyTorch(不确定 Torch),但您可能会发现它没有必要,因为 ONNX 和 TensorRT 都适合使用它们自己的运行时进行推理。但实际上,您可能会面临很多转换问题。
使用 Torch 复制模型代码,然后将 TensorFlow 张量复制到代码中的类似物。您可以在 HuggingFace/Transformers 代码1、2 中看到此类 TF->PyTorch 转换的示例。如您所见,这非常棘手。
【讨论】:
以上是关于将在 tensorflow 中训练的神经网络部署到 Torch C++ 的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章
学界 | 阿里NIPS 2017 Workshop论文:基于TensorFlow的深度模型训练GPU显存优化