无法加载DLL'tensorflow'或其依赖项之一(ML.NET)

时间:2019-10-24 21:51:50

标签: c# tensorflow dll asp.net-core-3.0 ml.net

我有一个使用Microsoft ML.NET框架进行图像分类的.NET Core 3应用。

在我的开发机器上,我可以运行代码,并且一切正常。

但是,当我将其部署到我的登台服务器时,在运行时会出现此错误:

System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
     System.DllNotFoundException: Unable to load DLL 'tensorflow' or one of its dependencies: The specified module could not be found. (0x8007007E)
     at Tensorflow.c_api.TF_NewGraph()
     at Tensorflow.Graph..ctor()
     at Microsoft.ML.Transforms.Dnn.DnnUtils.LoadTFSession(IExceptionContext ectx, Byte[] modelBytes, String modelFile)
...

我尝试在部署过程中将tensorflow.dll复制到bin文件夹中;我尝试将其构建为x64,x86或AnyCPU。我已验证是否包含SciSharp.TensorFlow.Redist和Microsoft.ML.Tensorflow.Redist NuGet程序包。到目前为止,什么都没有。

有什么想法为什么找不到DLL文件,或者我如何使它工作?

6 个答案:

答案 0 :(得分:3)

我在使用机器学习库时遇到了许多问题:

OQ 中提到的特定内容。错误:Unable to load DLL 'tensorflow' or one of its dependencies: The specified module could not be found. (0x8007007E),确实通过更新到最新的 VC++ x64 Redistributable 解决了。对我来说,那个链接是 here

出现错误时:Unable to find an entry point named 'TF_StringEncodedSize' in DLL 'tensorflow' 我需要将 SciSharp.TensorFlow.Redist 库从 2.4.x 降级到 2.3.x。

当收到 Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary 错误时,我注意到安装 Microsoft.ML.TensorFlow.Redist 是一个错误,需要删除。

答案 1 :(得分:1)

我已经找到了根本原因。

原因1: Microsoft.ML仅适用于 x64

原因2: 以下软件包的最新稳定版本(1.4.0)引发错误。 以下 v1.3.1 包运行正常。

  • Microsoft.ML v1.3.1
  • Microsoft.ML.ImageAnalytics v1.3.1
  • Microsoft.ML.TensorFlow v1.3.1

原因3: ML.NET和Tensor流只能在 .NET CORE 中工作,而不能在.NET框架中工作。

希望这对您也有用!祝您编码愉快!

答案 2 :(得分:1)

在开发环境中运行正常但在其他计算机中失败的C#桌面应用程序中的张量流神经网络也遇到了相同的问题。解决了在客户端计算机上安装Microsoft Visual C++ redistributable

的问题。

答案 3 :(得分:1)

安装 vc_redist.x64.exe 对我有帮助

答案 4 :(得分:0)

安装最新的VC_redist即可使用!

答案 5 :(得分:0)

如果您添加对 Microsoft.ML.TensorFlow.Redist 的引用,这可能会有所帮助。它为我解决了。