如何安装TensorFlow并在Windows下使用?
2016 年 8 月 4 日更新
Windows 10 现在有一个Ubuntu Bash 环境,又名Bash on Ubuntu on Windows,作为标准选项提供(而不是Insider Preview updates for developers)。 (StackOverflow 标记 wsl)此选项随附于 2016 年 8 月 2 日发布的 Windows 10 anniversary update(版本 1607)。这样就可以使用apt-get来安装Python和TensorFlow等软件包。
注意:Windows 上的 Ubuntu 上的 Bash 无法访问 GPU,因此安装 TensorFlow 的所有 GPU 选项都将不起作用。
installation instructions for Bash on Ubuntu on Windows 基本上是正确的,但只有这些步骤是必要的:
先决条件
启用适用于 Linux 功能的 Windows 子系统 (GUI)
出现提示时重新启动
在 Windows 上运行 Bash
不再需要步骤:
开启开发者模式
启用适用于 Linux 的 Windows 子系统功能(命令行)
然后使用 apt-get 安装 TensorFlow
sudo apt-get install python3-pip python3-dev
sudo pip3 install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.8.0-cp34-cp34m-linux_x86_64.whl
现在测试 TensorFlow
$ python3
...
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
Hello, TensorFlow!
>>> a = tf.constant(10)
>>> b = tf.constant(32)
>>> print(sess.run(a + b))
42
>>> exit()
并运行一个实际的神经网络
python3 -m tensorflow.models.image.mnist.convolutional
较早的答案
在了解了 Bash on Windows 的开发者预览版之后。
参见 Scott Hanselman 的 Playing with TensorFlow on Windows,它使用了 Bash on Windows 10
原答案
Bazel 是问题
TensorFlow 不是用build automation tools 制作的,比如make,而是用谷歌的内部构建工具Bazel。 Bazel 仅适用于基于Unix 的系统,例如Linux 和OS X。
由于当前已发布/已知的 TensorFlow 构建方式使用 Bazel 并且 Bazel 不能在 Windows 上运行,因此无法在 Windows 上本地安装或运行 TensorFlow。
来自Bazel FAQ
Windows 呢?
由于其 UNIX 传统,将 Bazel 移植到 Windows 意义重大
工作。例如,Bazel 广泛使用符号链接,它有不同的
跨 Windows 版本的支持级别。
我们目前正在积极改进 Windows 支持,但
距离可用还有很长的路要走。
状态
见:TensorFlow issue #17
见:Bazel issue #276
解决方案
解决方案按复杂程度和所需工作的顺序列出;从大约一个小时到甚至可能无法工作。
-
Docker
~ 1 小时
Docker installation
Docker 是一个系统,用于构建在您的机器上运行的 Linux 操作系统的独立版本。当您通过 Docker 安装和运行 TensorFlow 时,它会将安装与您机器上预先存在的软件包完全隔离开来。
也看TensorFlow - which Docker image to use?
-
OS X
~ 1 小时
如果您当前有运行 OS X 的 Mac,请查看:Installation for Mac OS X
- Linux
recommend Linux system 往往是 Ubuntu 14.04 LTS (Download page)。
一个。虚拟机 - Hardware Virtualization - Full Virtualization
~ 3 小时
下载并安装一个虚拟机,例如商业的VMware或免费的Virtual Box,之后你可以安装Linux,然后安装TensorFlow。
当您安装 TensorFlow 时,您将使用Pip - Python 的包管理系统。 Visual Studio 用户应该考虑 NuGet。这些包被称为wheels。
见:Pip Installation
如果您需要从源代码构建,请参阅:Installing From Sources
~ 4 小时
注意:如果您打算使用虚拟机并且以前从未这样做过,请考虑使用 Docker 选项,因为 Docker 是虚拟机、操作系统和 TensorFlow 打包在一起的。
b. Dual boot
~ 3 小时
如果您想在装有 Windows 的同一台机器上运行 TensorFlow 并使用 GPU 版本,那么您很可能必须使用此选项,因为在托管虚拟机上运行 Type 2 hypervisor 将不允许您访问 GPU。
-
远程机器
~ 4 小时
如果您有 remote access 到另一台可以安装 Linux 操作系统和 TensorFlow 软件并允许远程连接的计算机,那么您可以使用您的 Windows 计算机将远程计算机显示为在 Windows 上运行的应用程序。
-
云服务
我没有这方面的经验。如果您知道,请编辑答案。
正在使用Cloud 服务,例如AWS。
来自TensorFlow Features
想要在云中将模型作为服务运行?
使用 Docker 和 TensorFlow 进行容器化即可。
来自Docker
在 AWS 上运行 Docker 提供了一种高度可靠、低成本的方式
快速构建、发布和运行大规模分布式应用程序。部署
Docker 使用来自 AWS Marketplace 的 AMI。
- 等待 Bazel 在 Windows 上运行。
目前看来,唯一的阻碍是 Bazel,但在 Windows 上工作的 Bazel's roadmap 列表应该在今年可用。
列出了两个适用于 Windows 的功能:
2016‑02 Bazel can bootstrap itself on Windows without requiring admin privileges.
2016‑12 Full Windows support for Android: Android feature set is identical for Windows and Linux/OS X.
- 手动构建 TensorFlow。
几天或更长时间,取决于您的技能水平。我放弃了这个;要构建的子项目太多,要查找的文件太多。
请记住,Bazel 仅用于构建 TensorFlow。如果您获得 Bazel 运行的命令以及正确的源代码和库,您应该能够在 Windows 上构建 TensorFlow。请参阅:How do I get the commands executed by Bazel。
虽然我没有对此进行更多研究,但您可以查看 continuous integration 信息以获取所需文件以及如何构建它以进行测试的信息。 (Readme) (site)
- 在 Windows 上构建 Bazel
几天或更长时间,取决于您的技能水平。我也放弃了这个;找不到 Windows 所需的必要源文件。
有Bazel that boots on Windows的公开实验源码版本。您也许可以利用这一点让 Bazel 在 Windows 等上工作。
这些解决方案还需要使用Cygwin 或MinGW,这又增加了一层复杂性。
- 使用替代构建系统,例如 Make
如果你让这个工作,我想在 GitHub 上看到。
TensorFlow 目前不存在此功能。这是一个功能请求。
见:TensorFlow issue 380
- 交叉构建
如果你让这个工作,我想在 GitHub 上看到。
您使用 Bazel 在 Linux 上构建 TensorFlow,但更改构建过程以输出可以安装在 Windows 上的轮子。这将需要 Bazel 的详细知识来更改配置,并找到适用于 Windows 的源代码和库。我只建议作为最后的选择。这甚至可能是不可能的。
- 在适用于 Linux 的新 Windows 子系统上运行。
见:Windows Subsystem for Linux Overview
通过阅读参考文章,您将和我一样了解。
我可以将 Bazel for Windows 用于生产用途吗?
由于它是实验性软件,我不会在生产机器上使用。
请记住,您只需要 Bazel 即可构建 TensorFlow。所以在非生产机器上使用实验代码构建wheel,然后在生产机器上安装轮子。见:Pip Installation
TLDR;
目前我有几个版本可供学习。大多数使用 VMWare 7.1 工作站来托管 Ubuntu 14.04 LTS 或 Ubuntu 15 或 Debian。我的 Windows 机器上也有一个 Ubuntu 14.04 LTS 双启动来访问 GPU,因为装有 VMware 的机器没有合适的 GPU。我建议你给这些机器至少 8G 的内存作为 RAM 或 RAM 和交换空间,因为我已经用完内存几次了。