I am starting to work with TensorFlow library for deep learning, https://www.tensorflow.org/.
I found a explicit guide to work on it on linux and Mac but I did not find how to work with it under Windows. I try over the net, but the information are lacking.
I use Visual Studio 2015 for my projects, and I am trying to compile the library with Visual studio Compiler VC14.
How to install it and to use it under Windows?
Can I use Bazel for Windows for production use?
How to install TensorFlow and to use it under Windows?
Updated on 8/4/16
Windows 10 now has a Ubuntu Bash environment, AKA Bash on Ubuntu on Windows, available as a standard option (as opposed to Insider Preview updates for developers). (StackOverflow tag wsl) This option came with the Windows 10 anniversary update (Version 1607) released on 8/2/2016. This allows the use of apt-get to install software packages such as Python and TensorFlow.
Note: Bash on Ubuntu on Windows does not have access to the GPU, so all of the GPU options for installing TensorFlow will not work.
The dated installation instructions for Bash on Ubuntu on Windows are basically correct, but only these steps are necessary:
Enable the Windows Subsystem for Linux feature (GUI)
Reboot when prompted
Run Bash on Windows
Steps no longer needed:
Turn on Developer Mode
Enable the Windows Subsystem for Linux feature (command-line)
Then install TensorFlow using apt-get
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
and now test 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()
and run an actual neural network
python3 -m tensorflow.models.image.mnist.convolutional
After learning about the developer preview of Bash on Windows.
Bazel is the problem
Since the current published/known means to build TensorFlow uses Bazel and Bazel does not work on Windows, one can not install or run TensorFlow natively on Windows.
From Bazel FAQ
What about Windows?
Due to its UNIX heritage, porting Bazel to Windows is significant work. For example, Bazel uses symlinks extensively, which has varying levels of support across Windows versions.
We are currently actively working on improving Windows support, but it's still ways from being usable.
The solutions are listed in the order of complexity and work needed; from about an hour to may not even work.
Docker is a system to build self contained versions of a Linux operating system running on your machine. When you install and run TensorFlow via Docker it completely isolates the installation from pre-existing packages on your machine.
Also look at TensorFlow - which Docker image to use?
If you have a current Mac running OS X then see: Installation for Mac OS X
a. Virtual Machine - Hardware Virtualization - Full Virtualization
~ 3 hours
See: Pip Installation
If you need to build from the source then see: Installing From Sources
~ 4 hours
Note: If you plan on using a Virtual Machine and have never done so before, consider using the Docker option instead, since Docker is the Virtual Machine, OS and TensorFlow all packaged together.
b. Dual boot
~ 3 hours
If you want to run TensorFlow on the same machine that you have Windows and make use of the GPU version then you will most likely have to use this option as running on a hosted Virtual Machine, Type 2 hypervisor, will not allow you access to the GPU.
If you have remote access to another machine that you can install the Linux OS and TensorFlow software on and allow remote connections to, then you can use your Windows machine to present the remote machine as an application running on Windows.
From TensorFlow Features
Want to run the model as a service in the cloud? Containerize with Docker and TensorFlow just works.
Running Docker on AWS provides a highly reliable, low-cost way to quickly build, ship, and run distributed applications at scale. Deploy Docker using AMIs from the AWS Marketplace.
Currently it appears the only hold up is Bazel, however Bazel's roadmap list working on Windows should be available this year.
There are two features listed for 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.
Remember that Bazel is only used to build TensorFlow. If you get the commands Bazel runs and the correct source code and libraries you should be able to build TensorFlow on Windows. See: How do I get the commands executed by Bazel.
There is a public experimental source code version of Bazel that boots on Windows. You may be able to leverage this into getting Bazel to work on Windows, etc.
This currently does not exist for TensorFlow. It is a feature request.
See: TensorFlow issue 380
You build TensorFlow on Linux using Bazel but change the build process to output a wheel that can be installed on Windows. This will require detailed knowledge of Bazel to change the configuration, and locating the source code and libraries that work with Windows. An option I would only suggest as a last resort. It may not even be possible.
You will know as much as I do by reading the referenced article.
Can I use Bazel for Windows for production use?
Since it is experimental software I would not use on a production machine.
Remember that you only need Bazel to build TensorFlow. So use the experimental code on a non production machine to build the wheel, then install the wheel on a production machine. See: Pip Installation
Currently I have several versions for learning. Most use a VMWare 7.1 Workstation to host Ubuntu 14.04 LTS or Ubuntu 15 or Debian. I also have one dual boot of Ubuntu 14.04 LTS on my Windows machine to access the GPU as the machine with VMware does not have the proper GPU. I would recommend that you give these machines at least 8G of memory either as RAM or RAM and swap space as I have run out of memory a few times.