我有一个.NET核心3应用程序的图像分类,使用微软的ML.NET框架。
在我的开发机器上,我可以运行代码,并且一切正常。
但是,当我将其部署到临时服务器时,在运行时收到以下错误:
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文件,或者我怎么才能让它工作吗?
9条答案
按热度按时间fhg3lkii1#
已安装“SciSharp.TensorFlow.Redist”版本1.14.0,此问题现已解决。
我的软件包引用如下所示:
jv4diomz2#
C#桌面应用程序中的tensorflow 神经网络在开发环境中运行正常,但在其他机器上运行失败。在客户端机器上安装Microsoft Visual C++ redistributable解决了这个问题
l7mqbcuq3#
我已经找到了根本原因。
原因1:Microsoft.ML仅适用于x64
原因2:以下软件包的最新稳定版本(1.4.0)抛出错误。以下v1.3.1软件包工作正常。
原因3:ML.NET和tensorflow 仅在.NET CORE中工作正常,而在.NET Framework中不工作。
希望这对你也有效!编码快乐!
pkln4tw64#
我在ML库方面遇到了许多问题:
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是一个错误,需要删除。vsikbqxv5#
安装最新的VC_redist,然后它的工作!
a64a0gku6#
安装vc_redist.x64.exe帮助我
5kgi1eie7#
如果你添加一个引用到Microsoft.ML.TensorFlow.Redist,这可能会有帮助。它为我解决了这个问题。
zxlwwiss8#
1.首先,确保你的硬件能够处理最新的软件技术,如CPU架构或主板兼容性。我遇到这个问题是因为我使用的是10多年的旧系统。
1.安装最新的兼容vc_redist_64x发行版。
1.安装用于安装x64系统的框架兼容性程序包的Windows更新。
当我做了以下所有的事情时,它对我很有效。
mum43rcc9#
以防万一有人碰到这个问题。对我来说,绊脚石是一个旧的服务器,它不支持TensorFlow库工作所需的AVX/AVX 2 CPU功能。
下面是一个类似的问题:https://stackoverflow.com/a/62186328/2729784
来源:https://stackoverflow.com/a/35096938/2729784