Eu uso um hack / solução alternativa para evitar ter que construir toda a biblioteca TF (o que economiza tempo (é configurado em 3 minutos), espaço em disco, instalação de dependências de desenvolvimento e tamanho do binário resultante). É oficialmente não suportado, mas funciona bem se você quiser entrar rapidamente.
Instale o TF através do pip ( pip install tensorflow
ou pip install tensorflow-gpu
). Em seguida, encontre sua biblioteca _pywrap_tensorflow.so
(TF 0. * - 1.0) ou _pywrap_tensorflow_internal.so
(TF 1.1+). No meu caso (Ubuntu) está localizado em /usr/local/lib/python2.7/dist-packages/tensorflow/python/_pywrap_tensorflow.so
. Em seguida, crie um link simbólico para essa biblioteca chamado em lib_pywrap_tensorflow.so
algum lugar onde seu sistema de construção o encontre (por exemplo /usr/lib/local
). O prefixo lib
é importante! Você também pode dar outro lib*.so
nome a ele - se você o chamar libtensorflow.so
, poderá obter uma melhor compatibilidade com outros programas criados para trabalhar com o TF.
Em seguida, crie um projeto C ++ como você está acostumado (CMake, Make, Bazel, o que quiser).
E então você está pronto para vincular-se a essa biblioteca para ter o TF disponível para seus projetos (e também para vincular-se a python2.7
bibliotecas)! No CMake, por exemplo, basta adicionar target_link_libraries(target _pywrap_tensorflow python2.7)
.
Os arquivos de cabeçalho C ++ estão localizados em torno desta biblioteca, por exemplo, em /usr/local/lib/python2.7/dist-packages/tensorflow/include/
.
Mais uma vez: dessa forma, não há suporte oficial e você pode executar vários problemas. A biblioteca parece estar estaticamente vinculada a, por exemplo, protobuf, portanto, você pode executar problemas estranhos no tempo do link ou no tempo de execução. Mas sou capaz de carregar um gráfico armazenado, restaurar os pesos e executar inferência, que é a IMO a funcionalidade mais desejada em C ++.