Проверка не удалась: GetOpGradFactory () — & gt; insert ({op, func}). Second Дублированный градиент для MapAccumulate

Замечания:
Я также разместил этот вопрос здесь https://openmodelica.org/forum/default-topic/2570-linux-mint,-python-3-6-omc-server-is-down-please-start-it и я надеюсь достичь большой группы с опытом в тензорном потоке.


Я хочу использовать Tensorflow C ++ API в Modelica Model.

Для этого я создал класс в C ++, который инкапсулирует детали Tensorflow.
Кроме того, тот же файл содержит 3 функции (для вызова конструктора, деструктора и функции, которая использует существующий экземпляр моего класса. Эти функции объявляются как «extern» в соответствующем заголовочном файле (только если я прочитал компилятор C ++, я используя __cplusplus для дифференциации).

Затем я скомпилировал указанный файл (класс и 3 функции) в .so, используя g ++ (я использовал -fPIC и -shared). В / usr / lib я создал символическую ссылку на указанную библиотеку общих объектов.

(Для полноты я должен упомянуть, что у меня возникли проблемы с аннотациями «LibraryDirectory» и «IncludeDirectory». Именно поэтому я создал символические ссылки на содержимое всех каталогов, которые я бы передавал в g ++ / gcc, используя -L и -I (для моя тестовая программа) прямо в каталоги Model / Resources / Library and Model / Resources / Include. Поскольку ошибок компиляции больше не было, я подумал, что это нормально.)

Теперь странная вещь:

Я могу использовать 3 функции в тестовой программе, скомпилированной с помощью gcc. Я связал его со всеми библиотеками Tensorflow (и libm, libstdc ++ и моим .so сверху), и он просто работает, как и ожидалось.
Тем не менее, когда я пытаюсь использовать эти 3 функции в a) классе Modelica (конструктор и деструктор) и b) функции, использующей «внешний» вызов функции, она прекрасно скомпилируется, но возникает ошибка времени выполнения:


стандартный вывод | OMEditInfo |

/ tmp / OpenModelica_fred / OMEdit / TestCpp -port = 44382 -logFormat = xmltcp -override = startTime = 0, stopTime = 1, stepSize = 0,002, допуск = 1e-6, решатель = dassl, outputFormat = mat, variableFilter =. * — — r = TestCpp_res.mat -w -lv = LOG_STATS

стандартный вывод | ошибка |

2018-11-22 10: 47: 00.153977: F tenorflow / core / framework / function.cc: 1440] Ошибка проверки: GetOpGradFactory () ->insert ({op, func}). second Дублированный градиент для MapAccumulate

стандартный вывод | ошибка |

Процесс потерпел крах

стандартный вывод | ошибка |

Процесс потерпел крах
Процесс моделирования не удался. Выход с кодом 6.


Как это возможно? Я не могу ничего сделать в моей тестовой программе с 3 функциями, что приводит к той же ошибке. Что может сгенерировать исполняемый файл OMC, если я не в моей тестовой программе?

1

Решение

Я нашел решение, указывающее символическую ссылку «clang» в / usr / bin на «gcc».

Для инструкций, проверьте https://openmodelica.org/forum/default-topic/2570-linux-mint,-python-3-6-omc-server-is-down-please-start-it .

1

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

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

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