我有一个使用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文件,或者我如何使它工作?
答案 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 包运行正常。
原因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 的引用,这可能会有所帮助。它为我解决了。