tensorflowを使ってみる① pythonの環境構築とtensorflowの導入

#はじめに
僕は前のパソコンでpythonを使おうとした際に、かなり環境構築に手こずりました。

独学で色々と探してみた結果、いろいろな方法を混ぜて構築したり、警告文がいっぱい出たりと散々でした。。。。

この記事を読んでいただいている方には、pythonの環境構築からtensorflowの利用までを容易におこなえるようにご紹介したいと思います。

※下や記事を移動する前後に米印で注意が書かれているのでご注意ください。

#今回の内容
・AnacondaでPythonを使えるようにする。
・condaで実行環境を作成。
・tensorflowを実行環境内でインストールし、使えるかサンプルコードを書いて実行する。

このような内容で進めていこうと思います。

#tensorflowとは？
tensorflowのホームページで確認してきました。
>An open-source software library for Machine Intelligence
~~人工知能用のオープンソース・ソフトウェアだよ~~

とのことです。

公式サイト：[Tensorflow](https://www.tensorflow.org/)

今回は後でご紹介するanacondaを使って諸々のセッティングをするので、現時点でインストールしなくても大丈夫です。

#実行環境
MAC OS:Sierra 10.12.5
python:3.5.2(Anaconda 4.2.0)
tensorflow:1.1
※新しすぎるpythonだとサポートされていない(~~はず~~)ので、pythonは3.5を使用します

ちなみに、2017年６月末のTensorflow公式ドキュメントによると、

>Prerequisite: Python

>In order to install TensorFlow, your system must contain one of the following Python versions:
>~~テンソルフローをインストールする前に、あなたのシステムは下記のpythonバージョンを含んでいる必要があります~~
>
>Python 2.7
>Python 3.3+

というわけで、3.3以上が必要とのことです。

気になる方は、下記のコマンドを**ターミナル**で入力して、バージョンが合っているか確認してみてください。

###ターミナルとは！！！

ある程度他の言語の勉強をしているとターミナルを知っているのが当たり前で、Qiitaの記事での環境構築はpythonでやっているのか何なのかの説明文がないんです。

なので、今回はターミナルの開き方もご紹介します

別の記事でご紹介しているので、下記のページをご確認ください。
※分かる人はスキップしてください。

[ターミナルの使い方](http://qiita.com/yoshiki0000/items/9a6f3868022faf11dc65)


では、ターミナルを開いて、下記のコマンドを入力していきましょう。

```py3
あなたのMacBook-Pro:~ あなたのユーザー名$ python 
Python 3.5.2 |Anaconda 4.2.0 (x86_64)| (default, 日付) 
〜〜〜〜
〜〜〜〜
>>>
```

**※pythonインタプリタから抜けたい場合は、ctr+dを入力します。**

ちなみに、確認したところ僕のpythonは3.5でした。

また、下記のコマンドでも確認する事ができます。

```
あなたのMacBook-Pro:~ あなたのユーザー名$python --version 
Python 3.5.2 :: Anaconda 4.2.0 (x86_64)
```

macにはデフォルトでPython2系がインストールされています。

今回紹介するPython３系とcondaをインストールされていない方は、下に進んでAnacondaをインストールしましょう。


#Anaconda(アナコンダ)とは

[Anaconda](https://www.continuum.io/downloads)のホームページによると、

>Anaconda is the leading open data science platform powered by Python. The open source version of Anaconda is a high performance distribution of Python and R and includes over 100 of the most popular Python, R and Scala packages for data science.
>~~pythonのデータサイエンスプラットフォームだよ。~~
~~いっぱいパッケージが入ってます。~~

とのことです。

Anacondaの[Wikipedia](https://ja.wikipedia.org/wiki/Anaconda)によると
>Anaconda（アナコンダ）は、CentOS や Fedora で採用されているオペレーティングシステムのインストーラ。PythonとC言語で実装されている。GUIのフロントエンドにはPyGTK、テキストモードのフロントエンドにはPython-newtが使われている。


つまり、本当であれば、いちいちインストールしないといけないようなライブラリが全部入っているパッケージです。

この中にpython3系や仮想環境を作るために必要なcondaも入ってます。

#Anacondaをインストール

インストールを行うとanacondaが勝手にやってくれるので、概要以外今回は省略します。

[公式：DOWNLOAD　ANACONDA NOW](https://www.continuum.io/downloads)
####・手順
####１：Anacondaのインストーラーをインストール
####２：アナコンダのインストーラーを開く
####３：インストールしたパッケージにある「Anaconda-Navigator」をアプリケーションのディレクトリにdrag&drop
####4：インストールされ、python3が使えるか確認します。

先程もご紹介しましたが、インストールが終わったらpythonのバージョンを確認してみましょう。

インタプリタで調べてもpython2系のままになっている場合は、PATHが通っていない可能性があるので、下記のコマンドを入力します。

`あなたのMacBook-Pro:~ あなたのユーザー名$ export PATH=/Users/あなたのユーザー名/anaconda/bin:$PATH`

中の「あなたのユーザー名」の部分はご利用いただいているmacのユーザー名を指定してください。

再度、pythonインタプリタをターミナルで起動しましょう。

※参考になりそうな記事
t2yさん：[Anaconda で Python 環境をインストールする](http://qiita.com/t2y/items/2a3eb58103e85d8064b6)
 Continuum Analytics：[Anacondaホームページ](https://www.continuum.io/downloads)


#condaでTensorflowを使えるようにする
###・condaとは

>condaは、主にPython用に作られたパッケージ管理システムと環境マネジメントシステムです。 

>単体ではリリースされておらず、Anaconda、Anacondaサーバー、Minicondaに内包されています。 

>最近は、Pythonの数値計算環境を構築するために、様々なパッケージを簡単にインストールできるので人気があります。 
※ソース：https://teratail.com/questions/54334

根田ではなくcondaです。

condaを導入することで、様々な仮想環境を作成することが可能になります。

---

#ターミナルで下記のコマンドを入力して、condaでの実行環境を作ります

では、早速下記のコマンドを入力してcondaの仮想環境を開いていきます

`conda create -n 作成したい環境名 python=あなたのpythonバージョン`

今回はtensorflowという名前の仮想環境をpython3.5を利用して作成するので、下記のコマンドになります。

`$ conda create -n tensorflow python=3.5`

コマンドを入力し、インストールが終わるとtensorflowを使える「tensorflow」という名前の実行環境が作成されます。

現時点でtensorflowを入れているわけではないので、絶対にこの名前で作成しないといけないわけではありません。

バージョン等で名前を設定しておくのもわかりやすいですね。

※condaを使う場合と、python3.5を使う場合の方法なので、ご注意ください。

###他にも、pyenv等で仮想環境を構築することは可能なので、そちらのほうがいいという場合は下記をご検討ください(^^)

####・参考
1000chさん：[pyenvを使ってMacにPythonの環境を構築する](http://qiita.com/1000ch/items/93841f76ea52551b6a97)
※僕もhomebrewに怒られるので、pyenvを使いませんでした。
→[brewでpyenvを導入したが、brew doctorで怒られた](http://qiita.com/ebisennet/items/6bf5ccbdde3eab8a4438)

#condaで作った「tensorflow」という名前の実行環境へ移動する

condaで作成した実行環境には、下記のコマンドを入力すると移動(activate(アクティベート))できます
`$source activate さきほど作成した環境名`

僕はtensorflowという名前で仮想環境を作成したので、入力するコマンドは下記になります。
`$ source activate tensorflow`

成功した場合、下記のように左側へtensorflowの名前が出てきます。
`(tensorflow) あなたのMacBook-Pro:~ あなたのユーザー名$ `

###・実行環境を抜ける場合
下記のコマンドを入力すると、実行環境から元の階層へ戻ります(deactivate(ディアクティベート))。
`$ source deativate tensorflow`

次にステップではtensorflowのインストールを行います。

※インストールする前にtensorflow用の仮想環境に入るようにしてください。

#condaforgeでtensorflowをダウンロード
下記のコマンドでtensorflowインストールを行います。

####※インストールする前に先程作成したtensorflow用の仮想環境に入るようにしてください。

`
$ conda install -c conda-forge tensorflow
`

```
mkl:        2017.0.1-0     
  mock:       2.0.0-py35_0   conda-forge
    numpy:      1.13.0-py35_0             
    pbr:        3.1.1-py35_0   conda-forge
    protobuf:   3.3.0-py35_2   conda-forge
    six:        1.10.0-py35_1  conda-forge
    tensorflow: 1.1.0-py35_0   conda-forge
    werkzeug:   0.11.10-py35_0 conda-forge           
Proceed ([y]/n)? 
```
Yes or Noを入力するよう問われるので、yesを選択しました。

#無事にインストールできているかテストします
ターミナルを開いて、先程インストールしたtensorflowがインストールされているか、チェックしていきます。

※先ほど作成したtensorflow用の仮想環境に入り、pythonコマンドでインタプリタを起動してください。

```text
///①実行環境内で、pythonを起動します
(tensorflow) あなたのMacBook-Pro:~ あなたのユーザー名$ python
Python 3.5.2 |Anaconda 4.2.0 (x86_64)| (default, 今日の日付 
・・・(色々出てきます)
・・・
///②tensorflowをimportします。(import出来れば、インストール出来ていることとなります)
>>>import tensorflow as tf
///③下記のようにもう一度>>>が出て来ればインストールできています。
>>>
```

---
#####※実行環境に移動していない場合、またはインストールできていない場合は下記の警告がでます。

```text
>>>import tensorflow as tf
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: No module named 'tensorflow'
```

解決出来るかもしれないので、importできなかった場合にはコピペとコメントいただると幸いです。

#tensorflowを使ってHello Tensorflow!と出力されるコードを書きます。
```py3:
>>>import tensorflow as tf
>>>hello = tf.constant("Hello Tensorflow!")
>>>sess = tf.Session()  //Sessionは頭文字が大文字であることに注意してください
>>>print(sess.run(hello)) //さっき作ったhelloをsessionで動かします
b'Hello Tensorflow!'
```
↑このように出力されていれば、tensorflowを使えている証拠です！！！

###解説
１：一行目でtensorflowをimportし、tfという名前で呼び出すように設定します。
２：helloという名前で、"Hello Tensorflow!"を出力する定数(constant)を作成
３：実行をするためにSessionを利用してsessを作成します
４：helloをsessを利用して実行し、printで出力します。

>TensorFlowのグラフは、計算の記述です。どんな計算を行う場合でも、グラフをSessionの中で実行する必要があります。SessionはグラフのopsをCPUやGPUなどのデバイスに配置し、それらを実行する手段を提供します。

ソース：[コマンドラインからTensorFlowを実行する](http://www.tensorflow-partner.jp/howtouse)

詳しい動きはわからないですが、sessionを利用しないとダメだよってことですね。


#最後に

記事の中でまちがっていること等ありましたらコメントいただけますと幸いです(^^)

次回はtensorflowのチュートリアルにある[MNIST For ML Bigginers](https://www.tensorflow.org/get_started/mnist/beginners)について書かせていただきます！

ありがとうございました！