post Image
TensorFlowをWindowsでビルドする

※0.12から公式でWindowsビルドが提供されるようになりました!

Release 0.12.0/Major Features and Improvements

最近(たぶん2016/10ぐらいから)、TensorFlowがWindowsでビルドできるようになりました。
以下に、CMakeを利用したビルドの手順が公開されています(ただ、今後はbazelへ移行すると思われます)。

tensorflow/tensorflow/contrib/cmake/README.md

かなり丁寧に書かれているので、基本的にはこの通り行っていけばビルド、またPythonラッパーの生成を行いWindowsネイティブでPython x Tensorflowを使用することができます。
ただ、ビルドに結構時間がかかるので、手っ取り早く使いたい方は以下に私がビルドしたものを置いてありますので、使ってみてください。イントロダクションのコードが動くところまでは確認済みです。

icoxfog417/tensorflow-windows-build

なお、Windowsでのビルドは2016/11現在ではまだアルファ版の扱いであり、サポートされていない関数などもあるようです。そのため、通常使いとしてWindowsで運用するならbash on Windowsを利用して導入したほうが良いと思います(WindowsネイティブビルドができればGPUを使えるというメリットはありますが)。

ビルド環境

以下に、私がビルドした環境について記載しておきます。自分で試してみたい、という方はご参考ください。

  • Windows10(x64, Intel Core i7)
  • Python 3.5.2
    • Pythonはビルドの関係で、3.5系である必要がある
  • Visual Studio Community 2015
    • インストール時、Visual C++のオプションを選択しておく必要あり
  • cmake 3.6.3
    • 3.3.1だとなぜか途中でビルドエラーになる
  • numpy: 1.11.2
  • swig: 3.0.10
  • zlib: 1.2.8

miniconda/Anacondaを利用すると、ビルドのための環境を簡単に作成できます。

conda create -n tensorflow-win swig numpy zlib

ほんとはconda installcmakeも入るんですが、ここで入るcmakeのバージョンが3.3.1で、これだとビルドエラーが発生しました。そのため、cmakeについてはこちらから3.6系の最新版を落としてきて利用しました。ビルドのスクリプトは以下のような感じになります。

cmake .. -A x64 -DCMAKE_BUILD_TYPE=Release ^
-DSWIG_EXECUTABLE=<your_conda_env_path>\Library\bin\swig.exe ^
-DPYTHON_EXECUTABLE=<your_conda_env_path>\python.exe ^
-DPYTHON_LIBRARIES=<your_conda_env_path>\libs\python35.lib

※GPU版をビルドする場合、NVidia CUDA Toolkit 8.0とNVidia CUDNN 5.1が必要になります。これらを用意した後、以下のオプションを追加します。なお、MSBuildにあたってはこちらの修正を適応しておく必要があるので要注意。

More? -Dtensorflow_ENABLE_GPU=ON ^
More? -DCUDNN_HOME="<cudnn展開ディレクトリ>\cuda"

なお、ビルドにあたっては以下のリソースが必要です。

  • 2G程度のディスク容量(かなり食う)
  • 1 ~ 1.5 時間はビルドにかかる(8Gメモリ・Core i7)

ぜひWindowsでのTensorFlowライフに挑戦してみてください。


『 機械学習 』Article List
Category List

Eye Catch Image
Read More

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

AWSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Bitcoinに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

CentOSに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

dockerに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

GitHubに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Goに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Javaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

JavaScriptに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Laravelに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Rubyに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Scalaに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Vue.jsに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

Wordpressに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Eye Catch Image
Read More

機械学習に関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。