Pechkin80 2 Report post Posted September 3, 2019 Добрый день, 5й день пытаюсь подружиться с плюсовой версией tensorflow 1.14.( gcc 7.3.0) Пробовал линковать как готовую либу, которая идёт вместе с pip пакетом tensorflow-gpu, так и собирать из исходников. При компиляции вот такого кода: #include <iostream> #include <unistd.h> #include "tensorflow/core/public/session.h" using namespace std; int main() { using namespace tensorflow; GraphDef graph_def; Session* session; sleep(3); Status status = NewSession(SessionOptions(), &session); if (!status.ok()) { //std::cerr << "tf error: " << status.ToString() << "\n"; } cout << "Hello World!" << endl; return 0; } Результат выполнения программы в большинстве случаев вот такой: Цитата 2019-09-03 17:42:14.234360: E tensorflow/core/common_runtime/session.cc:81] Not found: No session factory registered for the given session options: {target: "" config: } Registered factories are {}. tf error: Not found: No session factory registered for the given session options: {target: "" config: } Registered factories are {}. По рекомендации отсюда пытался линковать с флагами: -Wl,--allow-multiple-definition -Wl,--whole-archive Потом на оснве информации отсюда сделал downgrade gcc/g++ с 7й до 6й версии, но тоже результатов не дало. Вообщем я перепробовал ВСЁ!!!. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted September 3, 2019 Там все на базель завязано, проекты тоже в нем собираются. Дело вкуса, но мне эта штука не нравится, и как решение, можно попробовать напрямую грузить замороженные модели прямо OpenCV-шным dnn модулем, либо преобразовать через ONNX в любой другой формат и опять же, либо через OpenCV, либо CAFFE, ncnn, .... или другой понравившийся фреймворк. TF -> ONNX: https://github.com/onnx/tensorflow-onnx Кстати, классная штука: https://github.com/lutzroeder/netron И эта тулза может пригодиться: https://github.com/daquexian/onnx-simplifier Share this post Link to post Share on other sites
Pechkin80 2 Report post Posted September 3, 2019 36 минут назад, Smorodov сказал: Там все на базель завязано, проекты тоже в нем собираются. Дело вкуса, но мне эта штука не нравится, и как решение, можно попробовать напрямую грузить замороженные модели прямо OpenCV-шным dnn модулем, либо преобразовать через ONNX в любой другой формат и опять же, либо через OpenCV, либо CAFFE, ncnn, .... или другой понравившийся фреймворк. TF -> ONNX: https://github.com/onnx/tensorflow-onnx Кстати, классная штука: https://github.com/lutzroeder/netron И эта тулза может пригодиться: https://github.com/daquexian/onnx-simplifier Я не хочу себя ставить в рамки узких возможностей, которые дают сурогаты. Базель имеет значения когда я сам компилирую tensorflow. Для меня задача минимум залинковать, извлечённую из pip пакета, поэтому базель меня щас не беспокоит. Почему у меня одного не работает ? Share this post Link to post Share on other sites
Smorodov 578 Report post Posted September 3, 2019 Я не использовал питоновскую либу, но помнится намучился строить TF на MSVS, проект сейчас не нашел, было давно. Но помнится, что там еще много чего надо было кроме DLL-ины. Вот здесь посмотрите, может поможет: https://joe-antognini.github.io/machine-learning/windows-tf-project Share this post Link to post Share on other sites
Nuzhny 243 Report post Posted September 4, 2019 Возможно, что в pip-пакете что-то не так. Ты смотрел таблицу экспорта? Есть там все функции или нет? Я помню, что после сборки запускал стандартные примеры и они работали. Далее для удобства использовал cmake обвязку: то ли эту, то ли ту. Share this post Link to post Share on other sites
Pechkin80 2 Report post Posted September 4, 2019 3 часа назад, Nuzhny сказал: Возможно, что в pip-пакете что-то не так. Ты смотрел таблицу экспорта? Есть там все функции или нет? Я помню, что после сборки запускал стандартные примеры и они работали. Далее для удобства использовал cmake обвязку: то ли эту, то ли ту. Какие все функции ? Сообщение вываливается на этапе выполнения кода. Функции все есть конечно. Вопрос инициаллизации глобальных объектов в либе. А этот код вообще валидный сам по себе. Может он и должен такое выдавать ? Я брал пример отсюда: https://habr.com/ru/post/308002/ Share this post Link to post Share on other sites
Nuzhny 243 Report post Posted September 4, 2019 А точно, просто увидел твой текст про опции линковки и пропустил про рантайм. Статья трёхлетней давности, кто его знает, правильно там или нет. Почему ты не собираешь стандартые примеры из репозитория TF? Зачем начинать с левой статьи? Share this post Link to post Share on other sites
Pechkin80 2 Report post Posted September 4, 2019 10 минут назад, Nuzhny сказал: А точно, просто увидел твой текст про опции линковки и пропустил про рантайм. Статья трёхлетней давности, кто его знает, правильно там или нет. Почему ты не собираешь стандартые примеры из репозитория TF? Зачем начинать с левой статьи? Например ? Share this post Link to post Share on other sites
Pechkin80 2 Report post Posted September 4, 2019 Кажеться Победа, но я ещё пока не уверен. Цитата 2019-09-04 21:51:58.942504: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA 2019-09-04 21:51:58.953128: I tensorflow/stream_executor/platform/default/dso_loader.cc:42] Successfully opened dynamic library libcuda.so.1 2019-09-04 21:51:58.975675: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-09-04 21:51:58.976390: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1640] Found device 0 with properties: name: GeForce 940MX major: 5 minor: 0 memoryClockRate(GHz): 1.189 pciBusID: 0000:01:00.0 2019-09-04 21:51:58.976409: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check. 2019-09-04 21:51:58.976473: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-09-04 21:51:58.977287: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-09-04 21:51:58.977953: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1763] Adding visible gpu devices: 0 2019-09-04 21:51:59.437425: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1181] Device interconnect StreamExecutor with strength 1 edge matrix: 2019-09-04 21:51:59.437455: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1187] 0 2019-09-04 21:51:59.437461: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1200] 0: N 2019-09-04 21:51:59.437663: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-09-04 21:51:59.438447: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-09-04 21:51:59.439192: I tensorflow/stream_executor/cuda/cuda_gpu_executor.cc:1005] successful NUMA node read from SysFS had negative value (-1), but there must be at least one NUMA node, so returning NUMA node zero 2019-09-04 21:51:59.439826: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1326] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 1286 MB memory) -> physical GPU (device: 0, name: GeForce 940MX, pci bus id: 0000:01:00.0, compute capability: 5.0) Share this post Link to post Share on other sites
Pechkin80 2 Report post Posted September 4, 2019 17 часов назад, Nuzhny сказал: Возможно, что в pip-пакете что-то не так. Ты смотрел таблицу экспорта? Есть там все функции или нет? Я помню, что после сборки запускал стандартные примеры и они работали. Далее для удобства использовал cmake обвязку: то ли эту, то ли ту. Я наверно упоротый параноик и из-за своей паранои проковырялся неделю. Я ж тоже когда сёрфил по инету наткнулся на эту репу https://github.com/FloopCZ/tensorflow_cc как и Вы Но тараканы в голове сказали что нельзя доверять неофициальной репе. Зато теперь я вооружён знаниями как собирать самому из первоисточника и не зависитеть от "добрых" людей. Share this post Link to post Share on other sites
Smorodov 578 Report post Posted May 17, 2020 Репа бинарников: https://www.tensorflow.org/install/lang_c Share this post Link to post Share on other sites