我有一个训练有素的 TensorFlow 模型,该模型正确保存为pb 模型以加载到 .NET 并执行推理。如果目标是 64 位(x64),.NET 程序将正确构建,但是当平台目标更改为 32 位(x86)时,它会抛出异常:
如果您在谷歌上搜索异常,则最高结果是 2019 年的堆栈溢出响应,其中第二个答案是:
原因 1: Microsoft.ML仅适用于 x64
这看起来并不乐观。然而,那年早些时候,在devblogs.microsoft中有一篇文章,其中提供了有关支持的架构的更多详细信息:
- 所有平台都支持 x64 位。
- x86 在 Windows 上受支持,TensorFlow、LightGBM 和 ONNX 相关功能除外。
同一作者在今年晚些时候在devblogs.microsoft上发表的另一篇文章说:
ML.NET 使用硬编码为基于 x86 的 SSE 指令的 C++ 代码。
这听起来更有希望,因为 TensorFlow 很容易转换为 C++。
由于所有这些都是大约 3 年前编写的,并且对 x86 的支持尚不支持 Tensorflow,并且它是根据第三篇文章使用 C++ 构建的,所以有什么改变吗?我尝试浏览 Microsoft.ML 并没有找到任何东西。我也没有找到关于讨论的最新文章。有没有其他方法可以保存 TensorFlow 模型以使其在 .NET 中的 x86 上运行?现在是否支持 x86 上的 C# 中的 TensorFlow?有哪些可能的解决方法?