python — Tensorflow Op и Kernel не регистрируются в Windows с помощью CMAKE

Я создаю пользовательскую реализацию Tensorflow Op и Kernel в C ++ для Tensorflow r1.3. Я успешно создаю и связываю библиотеку op с помощью формы предложений этот отчет об ошибке.

Мой код в значительной степени является стандартным кодом из Tensorflow API.

Когда я загружаю ОП с tf.load_op_library() Я могу использовать ops в Python и создать граф с ними и сохранить его как определение графа. Когда я впоследствии пытаюсь загрузить Ops тогда в C / C ++ с TF_LoadLibrary() вызов возвращает OK как статус, но операции не могут быть найдены.

Я всегда получаю ошибку:

Не найдено: Операционный тип не зарегистрирован ‘…’ в двоичном файле, работающем на … Убедитесь, что операционный и ядро ​​зарегистрированы в двоичном файле, работающем в этом процессе

Я в курсе этой статьи: Понимание регистрации операций и связывания ядра в TensorFlow.
И код регистрации Op, и код регистрации ядра находятся в коде библиотеки op.

Я старался:

  1. Перемещение регистрационного кода Op в мой собственный код C ++. Это работает, но затем меняется ошибка, так как ядра для этой операции не регистрируются, что тоже не помогает.
  2. Перемещение регистрационного кода ядра в мой собственный код C ++. Это не работает, потому что компоновщик не может найти скомпилированные операторы nvcc.
  3. Помещение макросов регистрации операций и ядра в метод DllMain вместо непосредственного помещения их в код. Также не помогло.
  4. Procmon.exe и Dependency Walker показывают, что DLL операционной системы загружена
    правильно. Так что как-то Tensorflow не регистрирует Ops с
    Настройка сборки на основе cmake. Построение тензор потока занимает 3-4 часа, когда я
    должны построить тензор потока полностью для моих изменений оп не очень
    возможно.
  5. Я копался в кодовой базе Tensorflow и нашел этот фрагмент кода, который я пытался вызвать напрямую Register("MyOp", TF::OpRegistry::Global());
  6. Инициализация интерпретатора Python с помощью Py_Initialize() из C ++ и выполните команду импорта python из C ++ с помощью PyRun_SimpleString

Кто-нибудь пробовал это уже и преуспел? Любой вход? Я в отчаянии.

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]