Я хотел бы загрузить op
из tf.contrib
, а именно "_beam_search_ops". Я использую Tensorflow 1.6 от Maven.
После ответа на Проблема при загрузке / обслуживании модели тензорного потока в java с использованием оценщиков я могу сделать это на Ubuntu 17.10.
Код выглядит так:
TensorFlow.loadLibrary("_beam_search_ops.so");
Затем я пытаюсь сделать то же самое в Windows 10 с кодом
TensorFlow.loadLibrary("_beam_search_ops.dll");
И это не срабатывает
java.lang.UnsatisfiedLinkError: D:\Users\ALEXAN~1\AppData\Local\Temp\deep_api_plugin\_beam_search_ops.dll not found
at org.tensorflow.TensorFlow.loadLibrary(TensorFlow.java:47)
Так в чем причина этого?
Пока я писал и исследовал вопрос, я наткнулся на решение.
Для решения проблемы файл _pywrap_tensorflow_internal.pyd
следует скопировать в папку, в которой находится _beam_search_ops.dll
. Я понимаю, что это тоже какой-то dll
, но не понимаю, зачем он нужен для Windows, а не для Ubuntu. Если кто-нибудь знает, пожалуйста, просветите меня.
Также я понимаю, что такая дополнительная информация должна быть предоставлена в комментарии к исходному ответу, но, к сожалению, у меня недостаточно репутации, чтобы комментировать, и я думал, что этот ответ может кому-то помочь.
Обновлено: я был слишком быстр, чтобы праздновать. С этим ответом загружается библиотека без исключения, но модель, похоже, не может ее использовать из-за сбоя
Exception in thread "main" org.tensorflow.TensorFlowException: Op type not registered 'GatherTree' in binary running on DESKTOP-EB6GIDR. Make sure the Op and Kernel are registered in the binary running in this process.
at org.tensorflow.SavedModelBundle.load(Native Method)
at org.tensorflow.SavedModelBundle.load(SavedModelBundle.java:39)
Поиск ответа должен продолжаться.