Tensorflow2.1.0をWindows10のAnacondaで使う！

#先に結論
**TensorFlow2.1.0がWindows10のPython3.7上で使えました！**
#まえがき
先日 TensorFlow 2.1.0 をGoogle Colabの環境を利用して使ってみました。
何の準備もせずに使えるのはこりゃあ便利だと感動しましたがローカルマシンで動かしたいのと以前から使っていたJupyter Notebook上でも動作させたいということで環境構築、テストをしてみました。
※Anacondaインストール済みからの構築となります。
##大まかな流れ
　1. **Anaconda Navigtor**で新しい仮想環境生成
　2. **Visual Studio 2015、2017 および 2019 用 Microsoft Visual C++ 再頒布可能パッケージ**をインストール
　3. Anaconda Navigtorで**TensorFlow,matplotlib**などライブラリをインストール
　4. インストール確認
　5. 実際に**TensorFlow 2.0** を動かして手書き文字の認識をしてみよう
　私が詰まったのは2の項目でした。**TensorFlow 2.1.0** を使うには追加パッケージをインストールする必要があるみたいなので
　ここが**Windows10**における**TensorFlow 2.1.0** のインストールで苦悶するポイントかも？
#1. Anaconda Navigtorで新しい環境生成
※仮想環境を使い分ける予定がない場合はrootを利用すればいいのでここの項目の作業はやらなくて大丈夫です。
Anaconda Navigtorを起動して左メニューからenvirmentを選択しcreateを押し、環境名を決めてPython3.7のバージョンを選択してcreateする。(少し時間がかかる)
![anaconda_env.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377692/cbd192ea-272c-846a-2027-35f6fb5709b8.png)

#2. Visual Studio 2015、2017 および 2019 用 Microsoft Visual C++ 再頒布可能パッケージをインストール
https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads/
上記のurlからVisual Studio 2015、2017 および 2019 用 Microsoft Visual C++ 再頒布可能パッケージをダウンロード、インストールします。
TensorFlow 2.1.0 以降のバージョンでは、このパッケージに含まれる msvcp140_1.dll ファイルが必要なようです。
![visual.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377692/6a57e5b3-2f99-9f7a-80ab-5fb007946d6d.png)

このファイル自体は Visual Studio 2019 に含まれているのでVS2019をインストール済みの方は大丈夫です。

#3. Anaconda NavigtorでTensorflow,matplotlibなどライブラリをインストール
ここまで終わればもうすぐです。
**Anaconda Navigator**に戻りenvirmentで生成した環境を選択した状態で右メニュー左の項目をALLかNot Installedにして**tensorflow,matplotlib**を検索してチェックボックスを付けてApplyをしてインストールします。
**TensorFlow2.1.0**はかなり巨大なライブラリなのでインストールに時間がかかりますが待ちましょう。
![anaconda_inst.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377692/9fa38957-c8bb-a48b-7068-cd6475fc74a0.png)

#4. インストール確認
**Anaconda Navigator**の環境名右の再生ボタンにあるopen with Pythonを選択しコマンドプロンプトを開きます。
ここで以下を実行してインポートとTensorFlowのバージョン確認をしてエラーがないなら正常にインストールできました！

```python
import tensorflow
print(tf.__version__)
```

##Warning! ***HDF5 library version mismatched error***
こちらのようなエラーが出た場合はHDF5ライブラリにバージョンの不整合が出ている恐れがあります。
私は一度動作確認を行った後にこの現象が起き、TensorFlowがインポートできなくなりました。
HDF5ライブラリを再インストールしたら治りました。

```python
pip uninstall h5py
pip install --user h5py
```
#5. 実際にTensorFlow 2.0 を動かして手書き文字の認識をしてみよう
ここまででTensorFlow2.1.0の環境構築は終わりました！
最後にTensorFlow公式サイトの「初心者のための TensorFlow 2.0 入門」を参考にしてニューラルネットワークの構築、訓練を行います。
Jupyter Notebookを起動して以下のコードを実行します。

初めにmnistという画像認識などを行うための訓練データセットを取り込み、ニューラルネットワークのモデルを構築します
```python:データセットの読み込み、モデルの構築
from __future__ import absolute_import, division, print_function, unicode_literals
# TensorFlow をインストール
import tensorflow as tf
#mnistからデータセットの読み込み
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
#ニューラルネットワークのモデルの設定、構築
model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])
```

```python:モデルの訓練と評価
model.fit(x_train, y_train, batch_size=32, epochs=5)
model.evaluate(x_test,  y_test, verbose=2)
```
こちらが訓練下の経過と結果です。
![train.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377692/54a759bc-55ab-439c-fed6-a93118c430ff.png)

```python:データセットの中身を表示
# ヘルパーライブラリのインポート
import numpy as np
import matplotlib.pyplot as plt
#データを10*6に出力
for i in range(0,60):
  plt.subplot(6,10,i+1)
  plt.imshow(x_train[i],cmap='gray')
plt.show()
print(y_train[0:60])
```
データセットの中身はこんな風になっています。28*28の手書き数字の画像データと数字ラベルが入っていることが分かりますね。
![dataset.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/377692/143a32fa-2786-562e-c53e-29ba23581eff.png)

#おわりに
**TensorFlow2.1.0をWindows10のPython3.7**上で使い、mnistの手書き数字のデータセットを元にニューラルネットワークのモデルを訓練してみました。次は自分で用意した手書き数字を予測させてみたいですね。


#出典
「pip での TensorFlow のインストール」 https://www.tensorflow.org/install/pip?hl=ja#windows