TensorFlow2でDeepLearningを学習する ~Windows版をAnacondaでインストール~

更新履歴

2019/11/16
  • Tensorflow2に合わせて記事を更新しました。
  • condaパッケージのtensorflowを利用するようにしました
2018/04/24
  • Tensorflow1.7に合わせて記事を更新しました。
2017/08/03
  • 新規作成。

人工知能、話題ですね。

碁や将棋でコンピューターが名人を打ち負かしたとか、車が勝手に自分で運転するだとか…すごいです。まさにSFの世界が現実になろうとしています。

私もうまいこと人工知能を作ることができれば

  • 私の代わりに仕事をやってもらったり
  • 株やFXで稼いでくれたり
  • 疲れた時にはやさしい言葉で癒してくれたり

ってことですよね?これは勉強しない訳にはいかないでしょう。

ディープラーニングというのがカギのようですが、どうやらGoogleが開発したTensorFlowなるものを使えば人工知能を作れる?

TensorFlowとは

お約束ですがTensorFlowとは何でしょう?GoogleのTensorFlowのサイトを見てみました。

TensorFlow は、機械学習(ML)の経験にかかわらず誰でも簡単に ML モデルを構築してデプロイできる、エンドツーエンドのプラットフォームです。

前はたしか”an open source software library”と紹介してあったのですが、最近ではプラットフォームに成長したみたいですね。結局何だかよく分かりません…

とりあえずインストールしていきます。Windows版のVersion2をインストールします。

一応公式のドキュメントは以下にありますが、今回はAnacondaのパッケージを使っているので、あまり参考にしてません。

インストール

Python (Anaconda)

TensorFlowをPythonから利用するためまずはPythonをインストールします。私はAnacondaというパッケージを使いました。

これはPythonと、主にデータサイエンスに便利なライブラリをパッケージ化して、配布しているものです。Tensorflowのパッケージもあり、特にGPU版はCUDAやcuDNNといったライブラリも一緒にインストールしてくれるため、とても便利です。

まず、インストーラをダウンロードします。先ほどのページの右上の”Download”をクリック、

表示されたページを下の方にスクロールして、Python3.7を”Download”。

ダウンロードが完了したら、インストーラを起動します。途中、ここにない画面も出てきますが、”I Agree”、”next”で飛ばしていきました。

自分専用にインストールします。

デフォルトのパスにインストールしました。

Pathを自動的に追加してくれるオプションもありますが、”Not recommended”でデフォルトはチェックが入ってません。そのまま進めます。

ここで、そこそこの時間待たされます。

インストールが完了しました。

確認です。スタートメニューにAnacondaが登録されたはずなので、”Anaconda Prompt (Anaconda3)”を起動。

プロンプトが表示されたら、python –versionと打ち込み、Enter。バージョンが表示されたら、オーケーです。

(base) C:\Users\(ユーザー名)>python --version
Python 3.7.4

次にTensorFlow2用のPython環境を作成します。以下のコマンドを入力します。

(base) C:\Users\(ユーザー名)>conda create -n tf2

ここでは”tf2”という環境を作っています。途中”Proceed ([y]/n)?”と聞かれるので、”y”と返事します。

次に作成したTensorFlow用の環境に切り替えてみます。

(base) C:\Users\(ユーザー名)>activate t2
(tf2) C:\Users\(ユーザー名)>

切り替わるとプロンプトが”tf2”に変わります。

TensorFlow

TensorFlowをインストールします。Anaconda向けのパッケージを使用します。

CPU版

(tf2) C:\Users\(ユーザー名)>conda install -c anaconda tensorflow

GPU版

(tf2) C:\Users\(ユーザー名)>conda install -c anaconda tensorflow-gpu

GPU版の方は、これだけでCUDAとcuDNNもインストールしてくれます。めっちゃ便利!

これでインストールは完了です。

動作確認

動作確認です。プロンプトで以下のコマンドを実行します。

(tf2) C:\Users\(ユーザー名)>python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"

エラーが出なければ、インストールはオーケーです。

ちなみに私の環境では、以下のような結果が表示されました。

CPU版

(tf2-cpu) C:\Users\(ユーザー名)>python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
2019-11-17 10:58:16.984215: I tensorflow/core/platform/cpu_feature_guard.cc:145] This TensorFlow binary is optimized with Intel(R) MKL-DNN to use the following CPU instructions in performance critical operations: AVX AVX2
To enable them in non-MKL-DNN operations, rebuild TensorFlow with the appropriate compiler flags.
2019-11-17 10:58:16.992464: I tensorflow/core/common_runtime/process_util.cc:115] Creating new thread pool with default inter op setting: 8. Tune using inter_op_parallelism_threads for best performance.
tf.Tensor(-290.74863, shape=(), dtype=float32)

GPU版

(tf2) C:\Users\(ユーザー名)>python -c "import tensorflow as tf;print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
2019-11-17 10:45:10.595282: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_100.dll
2019-11-17 10:45:12.283417: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll
2019-11-17 10:45:12.307801: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.835
pciBusID: 0000:01:00.0
2019-11-17 10:45:12.314933: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
2019-11-17 10:45:12.320715: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2019-11-17 10:45:12.323319: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
2019-11-17 10:45:12.331106: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1618] Found device 0 with properties:
name: GeForce GTX 1080 major: 6 minor: 1 memoryClockRate(GHz): 1.835
pciBusID: 0000:01:00.0
2019-11-17 10:45:12.337004: I tensorflow/stream_executor/platform/default/dlopen_checker_stub.cc:25] GPU libraries are statically linked, skip dlopen check.
2019-11-17 10:45:12.343229: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1746] Adding visible gpu devices: 0
2019-11-17 10:45:12.901242: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1159] Device interconnect StreamExecutor with strength 1 edge matrix:
2019-11-17 10:45:12.905413: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1165] 0
2019-11-17 10:45:12.908252: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1178] 0: N
2019-11-17 10:45:12.912896: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1304] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 6354 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1080, pci bus id: 0000:01:00.0, compute capability: 6.1)
tf.Tensor(-299.0041, shape=(), dtype=float32)