注:本文档适用于有兴趣修改 TensorFlow Hub 本身的开发者。要使用 TensorFlow Hub,请参阅安装说明
如果您对 TensorFlow Hub pip 软件包进行更改,则可能需要从源代码重新构建 pip 软件包来尝试进行更改。
这需要:
- Python
- TensorFlow
- Git
- Bazel
或者,如果您安装 protobuf 编译器,则可以在不使用 bazel 的情况下尝试更改。
设置虚拟环境
激活 virtualenv
如果尚未安装 virtualenv,请先安装:
~$ sudo apt-get install python-virtualenv
创建一个用于创建软件包的虚拟环境:
~$ virtualenv --system-site-packages tensorflow_hub_env
然后激活它:
~$ source ~/tensorflow_hub_env/bin/activate # bash, sh, ksh, or zsh
~$ source ~/tensorflow_hub_env/bin/activate.csh # csh or tcsh
克隆 TensorFlow Hub 仓库。
(tensorflow_hub_env)~/$ git clone https://github.com/tensorflow/hub
(tensorflow_hub_env)~/$ cd hub
测试您的更改
运行 TensorFlow Hub 的测试
(tensorflow_hub_env)~/hub/$ bazel test tensorflow_hub:all
构建并安装软件包
构建 TensorFlow Hub pip 打包脚本
要为 TensorFlow Hub 构建 pip 软件包,请运行以下代码:
(tensorflow_hub_env)~/hub/$ bazel build tensorflow_hub/pip_package:build_pip_package
创建 TensorFlow Hub pip 软件包
(tensorflow_hub_env)~/hub/$ bazel-bin/tensorflow_hub/pip_package/build_pip_package \
/tmp/tensorflow_hub_pkg
安装并测试 pip 软件包(可选)
运行以下命令来安装 pip 软件包。
(tensorflow_hub_env)~/hub/$ pip install /tmp/tensorflow_hub_pkg/*.whl
测试导入 TensorFlow Hub:
(tensorflow_hub_env)~/hub/$ cd .. # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"
“开发者”安装(实验性)
警告:这种运行 TensorFlow 的方法是实验性的,未获得 TensorFlow Hub 团队的官方支持。
使用 bazel 构建软件包是唯一受官方支持的方法。但是,如果您不熟悉 bazel,则使用开源工具更为简单。为此,您可以对该软件包执行“开发者安装”。
这种安装方法允许您将工作目录安装到 Python 环境中,以便在导入软件包时反映正在进行的更改。
设置仓库
如上文所述,首先设置 virtualenv 和仓库。
安装 protoc
由于 TensorFlow Hub 使用 protobuf,您将需要 protobuf 编译器以从 .proto
文件创建必要的 Python _pb2.py
文件。
在 Mac 上:
(tensorflow_hub_env)~/hub/$ brew install protobuf
在 Linux 上:
(tensorflow_hub_env)~/hub/$ sudo apt install protobuf-compiler
编译 .proto
文件
最初,目录中没有 _pb2.py
文件:
(tensorflow_hub_env)~/hub/$ ls -1 tensorflow_hub/*_pb2.py
运行 protoc
来创建这些文件:
(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
注:如果对 .proto
定义进行更改,请不要忘记重新编译 _pb2.py
文件。
直接从仓库导入
在 _pb2.py
文件准备好后,您可以直接在 TensorFlow Hub 目录中试用您的修改:
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"
在“开发者”模式下安装
或者,要从仓库根目录之外使用它,可以使用 setup.py develop
安装:
(tensorflow_hub_env)~/hub/$ python tensorflow_hub/pip_package/setup.py develop
现在,您可以在常规 Python virtualenv 中使用本地更改,而无需为每个新更改重新构建并安装 pip 软件包:
(tensorflow_hub_env)~/hub/$ cd .. # exit the directory to avoid confusion
(tensorflow_hub_env)~/$ python -c "import tensorflow_hub as hub"
停用 virtualenv
(tensorflow_hub_env)~/hub/$ deactivate