TensorFlowで画像分類など学習してみる（環境構築編） 

今回、初心者である私が学習した内容を書いていきます。TensorFlowを用いた画像の取り扱いを一通り勉強した内容となります。
すでにもう知っているという方については内容が薄い（もうそのレベルは物足りない）ということかもしれません。できるだけわかりやすく書いていきます。まずは、環境構築が必要となるのでここに書いていきます。

##マシン環境
ハードウェア：Lenovo　X1Carbon
CPU：Intel Core(TM) i7-5500U CPU 2.4Hz
OS：Windows10　HOME　（64bit）

##インストールについて
Anacondaをインストールして利用していきます。Anaconda自体のインストールは別のサイトなどを参考にしてください。この記事では事前に下記をインストールを行っています。
・Anaconda3
・Python3.7.7
・pip 20.0

##方法・手順
TensorFlow、その他のライブラリをインストールする方法はいくつか方法がありますが、ここではAnacondaで仮想環境を作成してインストールする方法を記載します。

###１．Anacondaで仮想環境を作る
Anaconda Navigator を起動します。EnvironmentsからCreateをクリックします。
クリックすると下記のダイアログがでますのでNameなどに任意の内容を入力します。PackagesはPython3.7を選択し
Createボタンを押します。

![Create.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/659138/a4daf1a1-f81c-6a4a-820e-a10552351fc9.png)

###２．Tensorflowインストール
作成した環境の三角ボタンをクリックし「open terminal」を選択してターミナルを立ち上げます。ターミナルで下記を入力します。

```
pip install tensorflow
```

__ポイント__
pipはPythonのパッケージを管理するためのツールです。
TensorFlowをインストールする場合、システム要件としてpip（ver19.0以降）が指定されています。ですので
pipもインストールして指定の要件をクリアしておきましょう。

次にインストールができているかバージョンを確認します。下記を入力します。

```
python -c "import tensorflow as tf; print(tf.__version__)"
```

上記コマンドでバージョンが表示されればインストールは完了です。
ですが、インストールすると問題が発生する場合があります。
上記コマンドを実行すると「ImportError: DLL load failed: 指定されたモジュールが見つかりません。」となる場合があります。

解決策として、インストール時のpipコマンドでバージョン指定を行います。

```
pip install --upgrade tensorflow==2.0.0
```
原因は2.1.0のバージョン以降、GPUサポートがデフォルトで含まれているということ。
Woindowsの場合にはMicrosoft Visual C++ Redistributable for Visual Studio 2015or2017or2019のインストールが必要なようです。私の場合は今回2.0.0へダウングレードする方法で対応しました。

###３．画像処理等、必要となるパッケージのインストール
次に必要なライブラリなどインストールします。ターミナルからコマンドを入力します。

jupyter notebookのインストール

```
conda install jupyter
```

h5py ライブラリのインストール

```
conda install h5py
```

matplotlibライブラリのインストール

```
conda install matplotlib
```

pillowライブラリのインストール

```
conda install pillow
```

opencvのインストール

```
conda install -c conda-forge opencv
```

上記インストール後、jupyter notebookを起動しインストールが問題ないか確認します。
jupyter notebook を起動する場合には、ターミナルからコマンドを入力して起動することをお勧めします。
後述のエラーが発生した場合、jupyter notebookの画面上では具体的なエラーが表示されず、カーネル停止というようなメッセージとなり問題解決には不十分です。ターミナルから起動した場合には詳細なメッセージがターミナルに表示されます。

TensorFlowのインストールがうまくいっているか確認するため、jupyter notebook上で下記のソースコードを書き、Shift + Enterキー　で実行します。

```
import tensorflow as tf; print(tf.__version__)
```

次のエラーが発生しました。ターミナルには


    To access the notebook, open this file in a browser:
        file:///C:/Users/xxxx/AppData/Roaming/jupyter/runtime/nbserver-17864-open.html
    Or copy and paste one of these URLs:
        http://localhost:8889/?token=9a5ebbfef6e13585b2da3f0c7831fe5ac5314e5e7ad63a48
     or http://127.0.0.1:8889/?token=9a5ebbfef6e13585b2da3f0c7831fe5ac5314e5e7ad63a48
     Kernel started: a6cb3609-ce0d-4e86-96c9-d169bc522fbe
     Warning! ***HDF5 library version mismatched error***
     The HDF5 header files used to compile this application do not match
     the version used by the HDF5 library to which this application is linked.
     Data corruption or segmentation faults may occur if the application continues.
     This can happen when an application was compiled by one version of HDF5 but
     linked with a different version of static or shared HDF5 library.
     You should recompile the application or check your shared library related
     settings such as 'LD_LIBRARY_PATH'.
     You can, at your own risk, disable this warning by setting the environment
     variable 'HDF5_DISABLE_VERSION_CHECK' to a value of '1'.
     Setting it to 2 or higher will suppress the warning messages totally.
     Headers are 1.10.4, library is 1.10.5
        SUMMARY OF THE HDF5 CONFIGURATION
        =================================

     General Information:
     -------------------
                   HDF5 Version: 1.10.5
                  Configured on: 2019-03-04
                  Configured by: Visual Studio 15 2017 Win64
                    Host system: Windows-10.0.17763
              Uname information: Windows
                       Byte sex: little-endian
             Installation point: C:/Program Files/HDF5


この場合、HDF5のライブラリが云々・・・
ターミナルからjupyter notebookを起動してバージョン確認のコマンドを実行すると、カーネルエラーが発生
ターミナルを見てみると次のようなエラーが・・・・

調べてみるとライブラリがあっていないということで[この記事](https://github.com/h5py/h5py/issues/853)を参考に再インストールしました。

```
pip uninstall h5py 
```

```
pip install h5py　
```

## インストール後のまとめ
TensorFlowのインストールを行う場合にエラーが発生しましたが解決すればそれほど詰まることなくインストールができます。もし同じような内容でつまずいた際には参考にしてもらえると良いかと思います。
ハマったポイントとしては、
・TensorFlowをインストール後、バージョン確認が行えなかった（インストールが上手くいっていない）
・HDF5ライブラリに起因する問題
です。この部分はバージョンなどを確認の上対策をしていくことが必要です。
また、現状TensorFlowは2019年に2.X系が公開されました。1.Xのバージョンと異なる点があります。
参考書などは1.Xを念頭に書かれているものがありますので、参考書の内容を学習する場合には、参考書に記載のバージョンの
インストールをお勧めします。2.xの環境で動作させる場合にはコードの書き換えが必要となる場合があります。