Utilizo un truco / solución alternativa para evitar tener que construir toda la biblioteca TF (lo que ahorra tiempo (se configura en 3 minutos), espacio en disco, instalación de dependencias de desarrollo y tamaño del binario resultante). Oficialmente no es compatible, pero funciona bien si solo quieres saltar rápidamente.
Instale TF a través de pip ( pip install tensorflow
o pip install tensorflow-gpu
). Luego encuentre su biblioteca _pywrap_tensorflow.so
(TF 0. * - 1.0) o _pywrap_tensorflow_internal.so
(TF 1.1+). En mi caso (Ubuntu) está ubicado en /usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so
. Luego, cree un enlace simbólico a esta biblioteca llamada en lib_pywrap_tensorflow.so
algún lugar donde su sistema de compilación lo encuentre (por ejemplo /usr/lib/local
). ¡El prefijo lib
es importante! También puede darle otro lib*.so
nombre: si lo llama libtensorflow.so
, puede obtener una mejor compatibilidad con otros programas escritos para trabajar con TF.
Luego crea un proyecto C ++ como estás acostumbrado (CMake, Make, Bazel, lo que quieras).
¡Y luego está listo para vincular contra esta biblioteca para tener TF disponible para sus proyectos (y también debe vincular contra python2.7
bibliotecas)! En CMake, por ejemplo, solo agrega target_link_libraries(target _pywrap_tensorflow python2.7)
.
Los archivos de encabezado de C ++ se encuentran alrededor de esta biblioteca, por ejemplo, en /usr/local/lib/python2.7/dist-packages/tensorflow/include/
.
Una vez más: de esta manera no se admite oficialmente y puede ejecutar varios problemas. La biblioteca parece estar estáticamente vinculada, por ejemplo, a protobuf, por lo que puede ejecutar problemas de tiempo de enlace o de tiempo de ejecución impares. Pero puedo cargar un gráfico almacenado, restaurar los pesos y ejecutar la inferencia, que es IMO la funcionalidad más deseada en C ++.