Перейти к содержимому
Compvision.ru
Pechkin80

Не могу залинковать tensorflow на убунте.

Recommended Posts

Добрый день, 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й версии, но тоже результатов не дало.

Вообщем я перепробовал ВСЁ!!!. 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Там все на базель завязано, проекты тоже в нем собираются. Дело вкуса, но мне эта штука не нравится, и как решение, можно попробовать напрямую грузить замороженные модели прямо 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
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 пакета, поэтому базель меня щас не беспокоит.

Почему у меня одного не работает ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Я не использовал питоновскую либу, но помнится намучился строить TF на MSVS, проект сейчас не нашел, было давно. 
Но помнится, что там еще много чего надо было кроме DLL-ины.  
Вот здесь посмотрите,  может поможет: https://joe-antognini.github.io/machine-learning/windows-tf-project 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Возможно, что в pip-пакете что-то не так. Ты смотрел таблицу экспорта? Есть там все функции или нет?

Я  помню, что после сборки запускал стандартные примеры и они работали. Далее для удобства использовал cmake обвязку: то ли эту, то ли ту.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
3 часа назад, Nuzhny сказал:

Возможно, что в pip-пакете что-то не так. Ты смотрел таблицу экспорта? Есть там все функции или нет?

Я  помню, что после сборки запускал стандартные примеры и они работали. Далее для удобства использовал cmake обвязку: то ли эту, то ли ту.

Какие все функции ? Сообщение вываливается на этапе выполнения кода. Функции все есть конечно. Вопрос инициаллизации глобальных объектов в либе.

А этот код вообще валидный сам по себе. Может он и должен такое выдавать ?
Я брал пример отсюда: https://habr.com/ru/post/308002/

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

А точно, просто увидел твой текст про опции линковки и пропустил про рантайм.

Статья трёхлетней давности, кто его знает, правильно там или нет. Почему ты не собираешь стандартые примеры из репозитория TF? Зачем начинать с левой статьи?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
10 минут назад, Nuzhny сказал:

А точно, просто увидел твой текст про опции линковки и пропустил про рантайм.

Статья трёхлетней давности, кто его знает, правильно там или нет. Почему ты не собираешь стандартые примеры из репозитория TF? Зачем начинать с левой статьи?

Например ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Кажеться Победа, но я ещё пока не уверен.

 

Цитата

 

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)

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Nuzhny сказал:

Возможно, что в pip-пакете что-то не так. Ты смотрел таблицу экспорта? Есть там все функции или нет?

Я  помню, что после сборки запускал стандартные примеры и они работали. Далее для удобства использовал cmake обвязку: то ли эту, то ли ту.

Я наверно упоротый параноик и из-за своей паранои проковырялся неделю. Я ж тоже когда сёрфил по инету наткнулся на эту репу https://github.com/FloopCZ/tensorflow_cc как и Вы Но тараканы в голове сказали что нельзя доверять неофициальной репе. Зато теперь я вооружён знаниями как собирать самому из первоисточника и не зависитеть от "добрых" людей.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Репа бинарников: https://www.tensorflow.org/install/lang_c

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте учётную запись или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать учётную запись

Зарегистрируйтесь для создания учётной записи. Это просто!

Зарегистрировать учётную запись

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу

×