1
votes

Utilisation de tensorflow en C ++ sous Windows

Je sais qu'il existe des moyens d'utiliser Tensorflow en C ++, ils ont même une documentation pour mais je peux sembler être en mesure d'obtenir la bibliothèque pour cela. J'ai vérifié la build à partir des instructions source mais il semble construire un package pip plutôt qu'un bibliothèque que je peux lier à mon projet. J'ai également trouvé un tutoriel mais quand Je l'ai essayé, j'ai manqué de mémoire et mon ordinateur est tombé en panne. Ma question est la suivante: comment puis-je faire fonctionner la bibliothèque C ++ sur mon projet? J'ai ces exigences, je dois travailler sur Windows avec Visual Studio en C ++. Ce que j'aimerais, c'est si je pouvais obtenir une DLL pré-compilée que je pourrais simplement lier mais je n'ai pas trouvé une telle chose et je suis ouvert à d'autres alternatives.


1 commentaires

4 Réponses :


1
votes

Je ne peux pas faire de commentaire, j'écris ceci comme une réponse. Si cela ne vous dérange pas d'utiliser Keras, vous pouvez utiliser le package frugally deep . Je n'ai pas non plus vu de bibliothèque moi-même, mais je suis tombé sur une profondeur frugale et cela m'a semblé facile à mettre en œuvre. J'essaye actuellement de l'utiliser, donc je ne peux pas garantir qu'il fonctionnera.


0 commentaires

1
votes

Vous pouvez consulter neural2D à partir d'ici:

https://github.com/davidrmiller/neural2d

Il s'agit d'une implémentation de réseau neuronal sans bibliothèques dépendantes (toutes écrites à partir de zéro).


0 commentaires

0
votes

La réponse semble être que c'est difficile : - ( Essayez ceci pour commencer. Vous peut suivre les dernières instructions pour construire à partir des sources sur Windows jusqu'au point de construction du package pip . Mais ne faites pas cela - faites ceci / ceci à la place:

bazel -config=opt //tensorflow:tensorflow.dll 
bazel -config=opt //tensorflow:tensorflow.lib
bazel -config=opt tensorflow:install_headers

Cela semble bien fonctionner. Les problèmes commencent vraiment lorsque vous essayez d'utiliser l'un des fichiers d'en-tête - vous obtiendrez probablement des erreurs de compilation, au moins avec la version TF> = 2.0. J'ai essayé:

  • Construisez l'exemple label_image (instructions dans le fichier readme.md)
    • Il se construit et fonctionne correctement sous Windows, ce qui signifie que tous les en-têtes et la source se trouvent quelque part
    • Essayez d'incorporer cette source dans l'exécutable de la console Windows: rencontre des erreurs de compilation en raison de conflits avec std :: min & std :: max, probablement à cause du SDK Windows.
  • Incluez c_api.h dans une application console Windows: ne sera pas compilé.
  • Inclure les fichiers d'en-tête TF-Lite: ne sera pas compilé.

Il ne sert à rien d'investir le long temps de compilation dans les deux premières commandes bazel si vous ne pouvez pas obtenir les en-têtes à compiler :-(

Vous pouvez avoir le temps d'investir dans la résolution ces erreurs; je ne le fais pas. À ce stade, Tensorflow ne prend pas suffisamment en charge Windows C ++ pour s'en servir, en particulier dans un contexte commercial. Je suggère plutôt d'explorer ces options:

MISE À JOUR: après avoir exploré la liste ci-dessus, j'ai finalement trouvé que ce qui suit fonctionnait le mieux dans mon contexte (reconnaissance continue des éléments en temps réel):

Même si Microsoft recommande d'utiliser DirectML là où les millisecondes comptent, les performances de l'exécution ONNX l'utilisation de DirectML comme fournisseur d'exécution signifie que nous pouvons exécuter une image RVB 224x224 via notre GPU Intel en environ 20 ms, ce qui est assez rapide pour nous. Mais il était encore difficile de trouver notre chemin vers cette réponse


0 commentaires

0
votes

Je dirais que la meilleure option est d'utiliser cppflow , un wrapper facile que j'ai créé pour utilisez Tensorflow à partir de C ++ facilement.

Vous n'aurez rien à installer, téléchargez simplement l'API TF C et placez-la quelque part dans votre ordinateur. Vous pouvez consulter la documentation pour savoir comment procéder et utiliser la bibliothèque. .


0 commentaires