丘と水路と橋と火を

言葉と技術

AnacondaでTensorFlowをつかうための環境を整える

まえがき

機械学習、興味はあるんだけどな〜〜〜」とながらく言っていたわたしですが、最近Udemyで機械学習の講座を受講し始めたこともあって、ようやくTensorFlowを利用したディープラーニングの学習を始めることにしました。

ところが、こうしたプログラミング関連の学習をしようとする際、最初の難関(そしてわたしが思うに最大の難関)は、なんといっても学習を実施するための環境構築。

「Anacondaはもうインストール済みで使ってきたし、追加でライブラリちょっと入れたら使えるだろ」と思っていたら、予想に反して突っかかった箇所があったので、備忘録的に残しておきます。

環境

macOS Mojave

Anacondaのインストール

公式サイトからインストーラをダウンロード。その後インストーラを起動して、画面の指示に従ってインストール。

ちなみにですが、Pythonの学習をしたいという方には、わたしはこのAnacondaをいつもおすすめしています。

必要になることが多いPythonのライブラリがはじめから用意されているほか、ブラウザでコーディングと実行が行えるJupyter Notebookも同梱されていて、非常に使い勝手が良いです。

プログラミングにはじめて触れた小学生の頃にこういう簡単に環境構築できるものがあったらよかったなあとよく思います。もしかしたらあったのかもしれないけど。CやJavaの環境設定に悪戦苦闘していたあの頃の時間を返せ。

Anaconda上にTensorFlowを利用できる仮想環境を新しくつくる

Anacondaがインストールされると、ターミナル(Windows環境ではコマンドプロンプト)からcondaコマンドが利用できるようになるはず(このあたりはかなり前に実施したので記憶が曖昧)。

Pythonではプロジェクトや目的に応じて動作環境を切り分ける「仮想環境」を用意するのですが、今回もTensorFlow用の仮想環境を用意したいと思います。

まずは試しに、いまのAnaconda上にある仮想環境を表示。

conda info -e

もしもコマンドがないというような怒られ方をしている場合には、Anacondaで一緒にインストールされたはずの「Anaconda Prompt」を実行してプロンプトを立ち上げること。それでも無理そうならググる

正しくコマンドが実行されると、仮想環境の一覧が表示される。

わたしの環境ではbaseという名前の環境がひとつだけ存在している状態だったので、これをもとにして新しい仮想環境をひとつつくります。以下のコマンドを実行。

conda create —clone base —name tfcpu

無事に処理が完了すると、tfcpuという環境が新しく追加されます。次は以下のコマンドでこのtfcpuという仮想環境に切り替えます。

conda activate tfcpu

環境を切り替えると、プロンプト(文字を入力する部分)の表記に(tfcpu)という表示が追加されているはず。

この状態で以下のコマンドを実行し、CPU版のTensorFlowをインストールします。

conda install tensorflow

ちなみにGPUを積んでいるマシンであれば、GPU版を以下でインストールすることも可能。

conda install tensorflow-gpu

この処理が無事に完了すればTensorFlowのインストールは完了。

ちゃんとインストールされているか、Pythonインタラクティブモードで確認します。

python
# 仮想環境上で上記コマンドを実行すると、仮想環境のPythonが実行される。
>>import tensorflow
# 正しくインストールされていたら、エラーなどが何も表示されずに改行できる。
# 本当に? とさらに疑うなら次を実行。色々取り込めていることが確認できる。
>>print(tensorflow.__dict__)
# 気が済んだらインタラクティブモードを抜ける。
>>exit()

あとは次のコマンドを実行してJupyter Notebookを起動し、ブラウザ上から画面右側の「New」>「Python3」で新規ノートブックを作成して、望みのコードを書いていきます。

jupyter notebook

と、思ったら......

それじゃあMNISTからはじめていこう!と思って手書き数字判別のソースコードを書いて実行。matplotlibで画像の様子なども確認しようとしたら、以下のエラーでカーネルが落ちました。

The kernel appears to have died. It will restart automatically.

メッセージや、調べてみた検索結果から、どうやらメモリ関連のエラーの様子。いろいろ試してみたのですが、わたしの環境では以下の方法で解決することができました。

# base環境に切り替える。
conda activate base
# いったんtfcpu環境を削除する。
conda remove --name tfcpu --all
# base環境のcondaをアップデートする。
conda update -n base -c defaults conda
# アップデートが済んだらもう一回tfcpu環境を作成する。
conda create —clone base —name tfcpu
# tfcpu環境に切り替え。
conda activate tfcpu
# 以下の順序でtfcpu環境にてライブラリのアンインストールとインストールを実行する。
conda uninstall mkl
conda install nomkl
conda install tensorflow
conda install matplotlib

mklというのはインテルの数学演算用ライブラリ。本当は演算の高速化を行ってくれるのですが、ときおり環境によっては処理が落ちることがある様子。そこでmklをアンインストールしてから、nomklというライブラリを代わりに導入し、TensorFlowとmatplotlibを再度入れています。

あとがき

この対応によってわたしの環境ではTensorFlowもmatplotlibも正常に動作するようになりました。少しずつでも学習を継続していく予定です。

ちなみにcondaの利用方法を再確認して色々調べているなかで、こんなものが公式から出ていることに気がつきました。

CONDA CHEET SHEET

これまでAnaconda Navigator経由で操作することが多かったのですが、コマンドベースでの操作の方が高速で快適だったので、今回のコマンドを利用する方法に切り替えていきたいです。