10
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【Windows】GPUでKerasを利用するメモ【Tensorflow-GPU】

Last updated at Posted at 2020-03-23

#構成
OS: Windows10 Home
CPU:Intel製 Corei7-4790
GPU: GTX1660 Super(NVIDIA製のGPUならなんでもいい)
Python: 3.6.10
Keras: 2.2.4
Tensorflow: 1.14.0
Cuda: 10.0
numpy: 1.16.4
sklearn: 0.22.2

##1.Windows Visual Studio C++のインストール
インストールページ
https://docs.microsoft.com/ja-jp/visualstudio/install/install-visual-studio?view=vs-2019
ここから、VisualStudioをインストールします。
今回は、2019年版をインストール。
インストール時に「C++ ワークロードを使用したデスクトップ開発」を必ず選択してください。

##2.NVIDIA Driverのインストール
https://www.nvidia.co.jp/Download/index.aspx?lang=jp
こちらのURLから自分のGPUを選択し、NVIDIAドライバをダウンロードします。
image.png
ダウンロードされたexeファイルを実行して、インストールします。

##追記.CUDA toolkitのダウンロードとインストール
https://developer.nvidia.com/cuda-10.0-download-archive

##3.cuDNNのダウンロード
https://developer.nvidia.com/rdp/cudnn-download
こちらのサイトから『cuDNN v7.6.5 for CUDA 10.0』をダウンロードする
image.png
次に、フォルダで「C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v.10.0」を開いてください。
解凍したフォルダの中にbin,include,libと3つのフォルダがあります。
binの中のファイルはbinのフォルダの中に、includeの中のファイルはincludeフォルダの中に、libの中のファイルはlibフォルダの中に上書き保存してください。

##4.tensorflow-gpuのインストール
まず普通のtensorflowがインストールされている場合、
アンインストールしてからインストールする必要がある。

pip uninstall tensorflow
pip install numpy==1.16.4
pip install tensorflow-gpu==1.14.0
pip install keras==2.2.4
pip install sklearn

グラフ描画やデータ処理に使いそうなものも併せてインストールしておく。
下は、インストールしなくてもいいです。

pip install matplotlib
pip install pandas
pip install pillow
pip install opencv-python
pip install opencv-contrib-python

##5.GPU版Tensorflowが認識しているかチェックする

from tensorflow.python.client import device_lib
device_lib.list_local_devices()

長文が出力されると思いますが、
その中の一行に、device_type: "GPU"name: "/device:GPU:0"などの文字があればOKです。

##6.やっぱりテストはMNISTで。
testといったらMNIST。
MNISTで速度検証します。

import time
import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten
from keras.layers import Conv2D, MaxPooling2D
from keras.optimizers import RMSprop

(x_train, y_train), (x_test, y_test) = mnist.load_data()

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(10, activation='softmax'))

x_train = x_train.reshape(x_train.shape[0], 28, 28, 1)
x_test = x_test.reshape(x_test.shape[0], 28, 28, 1)

x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255

y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

start_time = time.time()#スタート時間計測

model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])

history = model.fit(x_train, y_train,
                    batch_size=128,
                    epochs=10,
                    verbose=1,
                    validation_data=(x_test, y_test))

score = model.evaluate(x_test, y_test, verbose=0)
print('loss:', score[0])
print('accuracy:', score[1])

end_time = time.time() - start_time#終了時間を計測
print("学習時間:", str(round(end_time, 3)), "秒でした。")

GPU版での出力結果:48.13 秒
CPU版での出力結果:530.26秒

10倍以上も速度が違いました!!

##終わりに
個人でDeepLearningしたいという思いから古いPCにグラボ突っ込んでAIマシンをセッティングしました。
また、お金がたまったらもっとメモリのあるGPUや2枚刺しをしたいなと思います。
ではまた。

10
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
14

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?