Невозможно загрузить библиотеку DLL 'tenorflow' или одну из ее зависимостей (ML.NET) - PullRequest
1 голос
/ 25 октября 2019

У меня есть приложение .NET Core 3 для классификации изображений, использующее среду Microsoft 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)
...

Я попытался скопировать tenorflow.dll в папку bin во время развертывания;Я пробовал строить как x64, x86 или AnyCPU. Я проверил, что включены пакеты NuGet SciSharp.TensorFlow.Redist и Microsoft.ML.Tensorflow.Redist. Пока ничего не получалось.

Есть идеи, почему он не может найти файл DLL или как я могу заставить его работать?

1 Ответ

1 голос
/ 11 ноября 2019

Я выяснил причину.

Причина 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 Framework.

Надеюсь, это работает и для вас! Удачного кодирования!

...