ubuntu20.04(or windows10)  +anaconda+pytorchまたはtensorflowの環境を作成する

# 初めに
　今回がQiita初投稿です。至らない点がありましたら教えていただけると嬉しいです。

# この記事でやること
　NVIDIA Geforce GTX 1060が搭載されたPC上にpytorch,tensorflow,kerasの環境構築を行います。バージョンが違うと動かないことが多々あるので注意してください。

# 導入するもの
- nvidia driver(バージョンは任意(?))
- anaconda
- python 3.6で
 - tensorflow-gpu 1.12.0
 - keras 2.2.4
 - pytorch 1.6.0  
 ※anacondaからのみで使用する場合はcuda-toolkitなどはtensorflow-gpuなどをインストールするとき自動的に入れてくれるので自分で入れる必要はなさそうです。

# 動作環境
- windows10
- ubuntu20.04

# nvidia driverのインストール(ubuntuの場合)
[参考](https://qiita.com/protocol1964/items/19de3d1e27306f80d06d)
1. 搭載されているGPUやドライバの確認

```bash:GPUの確認
ubuntu-drivers devices  
```  
2\. ドライバのインストール

```bash:install_driver
sudo ubuntu-drivers install [ドライバのバージョン(435など recommendedされているものを使うと無難か?)]
#autoinstallはおすすめされていないらしい
#詳しくはubuntu-drivers --helpを実行する
```
3\. PCを再起動する
4\. `nvidia-smi`を実行しドライバなどの情報が取得できればOKです。

## nvidia-smiが動かないとき 
[参考](https://qiita.com/protocol1964/items/19de3d1e27306f80d06d)
`NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.`
のようになることがある。この時はNouveauを無効化する 
#### 手順
1. `sudo vim /etc/modprobe.d/blacklist-nouveau.conf`でファイルを作成し  

```a:blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
```
と記入
2\. `sudo update-initramfs -u`
3\. PCの再起動
詳細は上の参考を見てください。

# nvidia driverのインストール(windowsの場合)
 - [nvidia_driver_download](https://www.nvidia.co.jp/Download/index.aspx?lang=jp)から自分の使用している環境を選択しドライバをダウンロード
[]( - 自分の使用している環境はデスクトップで右クリックしnvidia コントロールパネルで調べられる??)
 - インストーラを起動する(すべてデフォルトのままでOKです)
 - コマンドプロンプトを開き`nvidia-smi`を実行しドライバなどの情報が取得できればOKです。

# anacondaのインストール
- [python japanによるanacondaのインストールガイド](https://www.python.jp/install/anaconda/)
- [anaconda公式](https://www.anaconda.com/products/individual)
に従ってインストールする

# 仮想環境の作成
- anaconda promptを起動する(windowsの場合)。ubuntuではコマンドラインのところに(base)とついていればOKです。  
[参考](https://qiita.com/ozaki_physics/items/985188feb92570e5b82d)  
`conda create -n 環境名 python=バージョン`
で仮想環境を作成します。ここで環境名は任意、バージョンは3.6とします  
- 環境のアクティベート
 `conda activate 環境名`
コマンドラインのところに(環境名)とついていれば大丈夫です。

# pytorchのインストール
[pytorch公式](https://pytorch.org/get-started/locally/)で自分の環境を選択していくと必要なコマンドが出てきます。
私の環境では
 `conda install pytorch torchvision cudatoolkit=10.2 -c pytorch`
でした。


## gpuを認識できているのかの確認(pytorch)
[参考(pytorch公式)](https://pytorch.org/get-started/locally/)
pythonを起動し

```python:確認
import torch
torch.cuda.is_available()
```

を実行する。Trueなら認識できている

# tensorflow-gpuのインストール
**注意:cuda-toolkitがtensorflow-gpu==1.12.0ではバージョン9.1が求められるのでpytorchと違うものが必要になる。そのためpytorchと仮想環境を分ける必要がある**
`conda install tensorflow-gpu==1.12.0`
## gpuを認識できているのかの確認(tensorflow)
[参考](https://thr3a.hatenablog.com/entry/20180113/1515820265)
pythonを起動し

```python:確認
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
```

とする。GPUが表示されればGPUを認識できている

#kerasのインストール
`conda install keras==2.2.4`






# 今後の展望(未開設)
- [keras-yolov3を使用する](https://qiita.com/f-sk/items/fa5aa31d405b3f563781)
- [nvidia-jetsonのクラス分類のfinetuningをpcで学習しjetson nanoにのせる](https://qiita.com/f-sk/items/e00d07b5f164060754b9)
- [nvidia-jetsonのdetectionのfinetuningをpcで学習しjetson nanoにのせる](https://qiita.com/f-sk/items/dee828b08b26713e2bf2)

# 終わりに
ページに問題があれば教えていただけると嬉しいです。参考にさせていただいたページの皆様ありがとうございました。  
# 参考一覧
- [Ubuntu18.04にCUDAをインストールする](https://qiita.com/protocol1964/items/19de3d1e27306f80d06d)   
- [python japanによるanacondaのインストールガイド](https://www.python.jp/install/anaconda/)
- [anaconda公式](https://www.anaconda.com/products/individual)
- [【初心者向け】Anacondaで仮想環境を作ってみる](https://qiita.com/ozaki_physics/items/985188feb92570e5b82d)
- [pytorch公式](https://pytorch.org/get-started/locally/)
- [TensorFlowからGPUが認識できているかを2行コードで確認する](https://thr3a.hatenablog.com/entry/20180113/1515820265)