在树莓派设备上编译 tensorflow 源代码

本指南基于运行在 Raspbian 9.0 系统的树莓派设备中编译 tensorflow 源代码。 尽管本指南可能适用于其他 Raspberry Pi 系统,但仅对此配置进行了测试和支持。

我们建议对 TensorFlow Raspbian package 进行交叉编译 (cross-compiling)。 交叉编译使用的平台与部署平台不同。 相较于在 Raspberry Pi 使用有限的 RAM 和相对较慢的处理器,我们更加建议在 Linux ,macOS 或 Windows 等功能更强大的主机上构建TensorFlow。

注意: 我们已经提供了适用于 Raspbian 系统的,预编译 TensorFlow packages

宿主机 (host) 设置

安装 Docker

为了简化依赖关系管理,构建脚本使用 Docker 来创建虚拟 Linux 开发环境进行编译。通过执行以下操作来验证您的 Docker 是否安装成功: docker run --rm hello-world

下载 Tensorflow 源代码

使用 Git 去克隆 (clone) TensorFlow repository:

git clone https://github.com/tensorflow/tensorflow.git
cd tensorflow

此 repo 默认使用 master 开发分支,你可以切换到 release 分支去编译。

git checkout branch_name  # r1.9, r1.10, etc.

注意:如果您在最新的开发分支上遇到构建问题,请尝试一个已知有效的 release 分支。

编译源代码

交叉编译TensorFlow源代码,用ARMv7 [NEON 指令](https://developer.arm.com/technologies/neon){:.external}构建 Python pip 程序包,该程序可在 Raspberry Pi 2和3设备上运行。 构建脚本启动 Docker 容器进行编译。 在Python 3和Python 2.7之间选择目标软件包:

Python 3

CI_DOCKER_EXTRA_PARAMS="-e CI_BUILD_PYTHON=python3 -e CROSSTOOL_PYTHON_INCLUDE_PATH=/usr/include/python3.4" \
    tensorflow/tools/ci_build/ci_build.sh PI-PYTHON3 \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh

Python 2.7

tensorflow/tools/ci_build/ci_build.sh PI \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh

要构建一个支持所有Raspberry Pi设备的软件包,包括Pi 1和 Zero - 请传递PI_ONE参数,例如:

tensorflow/tools/ci_build/ci_build.sh PI \
    tensorflow/tools/ci_build/pi/build_raspberry_pi.sh PI_ONE

构建完成(约30分钟)后,将在 host 源代码树的 output-artifacts 目录中创建一个 .whl 软件包文件。将 wheel 文件复制到 Raspberry Pi 并使用 pip 安装:

pip install tensorflow-version-cp34-none-linux_armv7l.whl

现在 TensorFlow 已安装在 Raspbian 上。