Création du package pip TensorFlow Hub à l'aide de Linux

Si vous apportez des modifications au package pip TensorFlow Hub, vous souhaiterez probablement reconstruire le package pip à partir des sources pour essayer vos modifications.

Cela nécessite :

  • Python
  • TensorFlow
  • Git
  • Bazel

Alternativement, si vous installez le compilateur protobuf, vous pouvez essayer vos modifications sans utiliser bazel .

Configurer un virtualenv

Activer virtualenv

Installez virtualenv s'il n'est pas déjà installé :

~$ sudo apt-get install python-virtualenv

Créez un environnement virtuel pour la création du package :

~$ virtualenv --system-site-packages tensorflow_hub_env

Et activez-le :

~$ source ~/tensorflow_hub_env/bin/activate  # bash, sh, ksh, or zsh
~$ source ~/tensorflow_hub_env/bin/activate.csh  # csh or tcsh

Clonez le référentiel TensorFlow Hub.

(tensorflow_hub_env)~/$ git clone https://github.com/tensorflow/hub
(tensorflow_hub_env)~/$ cd hub

Testez vos modifications

Exécuter les tests de TensorFlow Hub

(tensorflow_hub_env)~/hub/$ bazel test tensorflow_hub:all

Construire et installer le package

Créer un script d'empaquetage pip TensorFlow Hub

Pour créer un package pip pour TensorFlow Hub :

(tensorflow_hub_env)~/hub/$ bazel build tensorflow_hub/pip_package:build_pip_package

Créer le package pip TensorFlow Hub

(tensorflow_hub_env)~/hub/$ bazel-bin/tensorflow_hub/pip_package/build_pip_package \
/tmp/tensorflow_hub_pkg

Installez et testez le package pip (facultatif)

Exécutez les commandes suivantes pour installer le package pip.

(tensorflow_hub_env)~/hub/$ pip install /tmp/tensorflow_hub_pkg/*.whl

Test d'importation de TensorFlow Hub :

(tensorflow_hub_env)~/hub/$ cd ..  # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

Installation "Développeur" (expérimentale)

Construire le package avec bazel est la seule méthode officiellement prise en charge. Cependant, si vous n'êtes pas familier avec Bazel, il est plus simple de travailler avec des outils open source. Pour cela, vous pouvez effectuer une "installation par le développeur" du package.

Cette méthode d'installation vous permet d'installer le répertoire de travail dans votre environnement Python, afin que les modifications en cours soient reflétées lorsque vous importez le package.

Configurer le référentiel

Configurez d’abord virtualenv et le référentiel, comme décrit ci-dessus .

protoc

Étant donné que TensorFlow Hub utilise des protobufs, vous aurez besoin du compilateur protobuf pour créer les fichiers python _pb2.py nécessaires à partir des fichiers .proto .

Sur un Mac :

(tensorflow_hub_env)~/hub/$ brew install protobuf

Sous Linux

(tensorflow_hub_env)~/hub/$ sudo apt install protobuf-compiler

Compilez les fichiers .proto

Initialement, il n'y a pas de fichiers _pb2.py dans le répertoire :

(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py

Exécutez protoc pour les créer :

(tensorflow_hub_env)~/hub/$ protoc -I=tensorflow_hub --python_out=tensorflow_hub tensorflow_hub/*.proto
(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py
tensorflow_hub/image_module_info_pb2.py
tensorflow_hub/module_attachment_pb2.py
tensorflow_hub/module_def_pb2.py

Importer directement depuis le référentiel

Une fois les fichiers _pb2.py en place, vous pouvez essayer vos modifications directement à partir du répertoire TensorFlow Hub :

(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

Installer en mode "développeur"

Ou pour l'utiliser depuis l'extérieur de la racine du référentiel, vous pouvez utiliser l'installation setup.py develop :

(tensorflow_hub_env)~/hub/$ python tensorflow_hub/pip_package/setup.py develop

Vous pouvez désormais utiliser vos modifications locales dans un virtualenv python standard, sans avoir besoin de reconstruire et d'installer le package pip pour chaque nouvelle modification :

(tensorflow_hub_env)~/hub/$ cd ..  # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"

Désactiver le virtualenv

(tensorflow_hub_env)~/hub/$ deactivate