20200121のTensorFlowに関する記事は2件です。

CUDA+cuDNNのインストールまとめ

はじめに

Windows10の環境にNVIDIA CUDA ToolkitとcuDNN SDKを
インストールする手順をまとめました。

今回は、Tensorflow2.1.0で動作することを目的としているので
インストールするバージョンは下記になります。

  • CUDA10.1
  • cuDNNv7.6.5

CUDA対応GPU
https://developer.nvidia.com/cuda-gpus

tensorflow2.1.0のGPUサポートページ
https://www.tensorflow.org/install/gpu

Visual Studioのインストール

CUDAを動かすには、Visual Studioのコンパイラが必要なので
入れてない場合は、事前にVisual Studioをインストールしておきましょう。
https://docs.microsoft.com/ja-jp/visualstudio/releases/2019/release-notes

CUDA10.1の対応表です
viusal_studio_CUDA.PNG

x86版の開発を行う場合、Visual Studio2013以下のバージョンが必要なようです。

インストールする場合、「C++によるデスクトップ開発」にチェック
オプションに「MSVC v142 - VS 2019 C++ x64/x86 ビルドツール」にチェックが
入っていることを確認してください。
visual_studio_install_photoshop.png

CUDA Toolkitのダウンロード

https://developer.nvidia.com/cuda-toolkit-archive
上記よりCUDA Toolkitをダウンロードしてインストールします。
今回はCUDA10.1をダウンロードしました。

フレームワークまたはアプリケーションによっては、
対応バージョンが違うので必ずしも、最新版を入れればよいというわけでないので注意してください

システム環境変数のPATHが下記のようになってるか確認
システムPATH.PNG

システム環境変数のCUDA_PATHが下記のようになってるか確認
CUDAPATH.PNG

システム環境変数のCUDA_PATH_V10_1が下記のようになってるか確認
CUDAPATH10.1.PNG

インストールしてからまだPCを再起動していない場合
ここらへんで、再起動することをお勧めします。

環境変数にPATHを通した場合、再起動しないと適応されない場合があります。
詳しくは環境変数を変更したら再起動すべきか

コマンドプロンプトで下記を実行して
PATHがちゃんと通ってるか確認してください

nvcc -V

nvcc.PNG

cuDNNのインストール

https://developer.nvidia.com/cuDNN
上記よりcuDNNをダウンロードします。
ダウンロードするにはログインが必要なので簡単にアカウントを作ってください。

download_cuDNN_photoshop.png

解凍したら、cuDNN内のcudaフォルダの中身をすべて
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1
にコピーします。

最後にシステム環境変数に新規

変数名「CUDNN_PATH」
値 「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1」

を追加します。

システムPATH_cuDNN.PNG

ここでも再起動することをお勧めします。

次にコマンドプロンプトで下記を実行し、エラーがでないことを確認してください。

where cudnn64_7.dll

cuDNN結果.PNG

Tensorflowで動作を確認

今回、Tensorflow2.1.0での使用目的だったので一応動作確認しておきます。

test.py
import tensorflow as tf

with tf.device('/gpu:0'):
    a = tf.Variable([[1., 2.]])
    b = tf.constant([[3.], [4.]])
    print(tf.matmul(a, b))

tensorflow_結果.PNG
以上です、お疲れさまでした。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

大場花菜と大谷映美里の分類をディープラーニングでやってみた(その2)

前回の続き

会社の研修で画像認識で分類問題を解いたので自分の好きなアイドルで同じことをしてみようとしたのがきっかけ。
以下、前回の記事

大場花菜と大谷映美里の分類をディープラーニングでやってみた

今回は前回の結果を踏まえ、精度向上と間違えてた画像がどのようなものだったのかを見ていこうと思います。

その前に分類対象となるお二方のご紹介

大場花菜

私、おぼろの心の推しメン。アイドルグループ「=LOVE」のメンバーです。
どがわええええええええええべほべほべろほろへゆろ、!!!!!ーー!!!


EMUEVIBUcAAgFdI.jfif

以下、Twitterのアカウント。是非フォローよろしくお願いします。
大場花菜(https://twitter.com/hana_oba)

大谷映美里

同じくアイドルグループ「=LOVE」のメンバーです。
かわいいですね。

ELKvYJ_UYAEkYf3.jfif

大谷映美里(https://twitter.com/otani_emiri)

前回の精度が大体正答率90%くらいでした。

精度向上のために試すこと① ~試行回数を増やす~

前回がエポック数200回ほどでした。

ダウンロード (1).png

これをみるとまだ上がりそう(試行回数が多すぎると一時的ではなく恒常的にグラフが下降していきます)

なのでもっと回数を増やしていきます。
200→1000回へ

無事に精度が向上しました。
800回を超えたあたりで長い間低い値を推移しており、これは過学習してしまっているのか?と思いましたが最後持ち直してくれましたね。

ダウンロード (2).png

1000エポック目は正答率98.33%でした。
まぁ実際には研修の時に精度向上のためにいくらか試行錯誤をしているので回数を増やすだけで結構精度を出すことができました。
記事としてはもっと精度向上のためにもがき苦しむべきなんでしょうがこれで良しにしたい自分がいます。
・・・とりあえず今日は精度向上はここまでにしてこのモデルが何を間違えたのかを見ていきます。(早く推論がやりたい)

何を間違えてしまったのか見てみる

以下で答え合わせして、間違えてしまったやつがどれなのか、見ていきます。

idol.ipynb
ans = []
for i in range(0,x_test.shape[0]):
  x = np.array([x_test[i]])
  y = model.predict(x)
  ans.append(np.argmax(y))
  if(ans[i] != t_test[i]):
    print(i)

以下が結果

75
82
148

検証データ140件のうち誤答が3件=正解率が約98%なのであってそうですね!
これをつかって以下のように一度数値に落としたデータを画像に復元します。

idol.ipynb
plt.imshow(x_test[75])
plt.imshow(x_test[82])
plt.imshow(x_test[148])
  • 75


    EB7uqiOUIAEgxwa.jfif
  • 82

カメコさんの画像だったので載せるのはやめておきます。
以下のツイートの1枚目です。(いいね!押しておいてください)
https://twitter.com/hana_oba/status/1119100534286217221?s=20

  • 148
EJu0k1TU8AEaSsc.jfif

うーん、、、普通に花菜ちゃんですね。
1枚目はみりにゃ率89%
2枚目はみりにゃ率58%
3枚目はみりにゃ率64%
で最終的にみりにゃという判断をしたみたいです。

まぁ、ディープラーニングはなぜそのような判断をしたのかを人間がわかるレベルで説明することはなかなかできないのでこれ以上推測することとかは何もないのですが。

では次回は違う方法で精度を高めていこうと思います。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む