google GPU Python ディープラーニング

[Google Colab]JupyterでHello World→MNISTを試してみる

投稿日:

スポンサードリンク

はじめに

Google Colabとは…

Colaboratory は、完全にクラウドで実行される Jupyter ノートブック環境です。設定不要で、無料でご利用になれます。詳細については、よくある質問をご覧ください。

つまりPythonが無料で動かせる環境です。さらにドキュメントを読み進めていくとGPUも使えるようなので今はやりのDeepLearningの学習スクリプトも動かせます。ただし、あまり時間のかかりすぎるものは停止されるかもしれないみたいです。

作成したファイルはGoogle Driveに保存され、さらに共有することもできます。

管理人
無料でJupyter動かせるなんてすごい便利ですね…

かつてわざわざGPU環境のためにWindowsにUbuntuをデュアルブートして色々やったことがありましたが、そんなことしなくても気軽にDeepLearningを実行できてしまうようです。しかも無料で!

というわけでとりあえずHello Worldしました。

ドキュメントの最後の方に書いてありましたが仮想通貨マイニングに悪用してはなりません。

Google ColabでHello World

ただのPythonなので難しいことは一切しないです。

まずGoogle Colabのページを開くとこんな感じの画面が出てくると思います。出てこなかったらGoogleアカウントを登録してください。

これは一旦閉じて「ファイル」>「Python3の新しいノートブック」を選びます。Python 2がいい方はそちらをクリックしてください。

するとJupyter Notebookが新規作成されるのでコードを記入して「Ctrl+Enter」もしくは左側の矢印マークをクリックして実行させることができます。

そしてHello Worldはこれです。ただのPythonで文字を出しただけです。

さすがにこれでは味気ないのでもうちょっと遊んでみます。

matplotlibでグラフを描画

トップページにデフォルトで入っているmatplotlibのサンプルを動かしてみました。

なんてことはない最小二乗法のフィッティングのサンプルなのですが、きちんとグラフ化できている様子がわかります。

実はこれはpipも何もしないで動かしましたが、はじめから主要なライブラリはインストールされているのでimportすれば使えます。この辺もらくちん。

しかも、存在しないライブラリも冒頭に!pipや!apt-getを書けばインストールできます。こちらのドキュメントに詳細が記載されています。

例)matplotlib-vennのインストール

!pip install -q matplotlib-venn

MNISTのサンプル

KerasもはじめからインストールされているのでGPUも使って動かしてみます。ディープラーニング界のHello World的存在?のMNISTを動かしてみました。

メモ

MNIST(Mixed National Institute of Standards and Technologyの略)は手書き文字認識用の60,000枚の28x28,10個の数字の白黒画像と10,000枚のテスト用画像データセットです。各画像には0~9の手書き文字が記されています。昔から研究されており、データの内容や問題設定がシンプルなので良く例として挙げられます。

まず新しくノートブックを作成して「ランタイム」>「ランタイムのタイプを変更」を選択します。するとGPU選択画面が出てくるのでGPUを選びます。

ここで

import tensorflow as tf
tf.test.gpu_device_name()

として「'/device:GPU:0'」などと返答が来ればGPUが割り当てられたことがわかります。

今回はKerasの公式リポジトリのサンプルを実行してみました

サンプルそのままですが、これをコピペして実行させます。ブロックは適宜分けてください。(importやmnistデータ読み込み部分など必要に応じて適宜分けてください)

import keras
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop

batch_size = 128
num_classes = 10
epochs = 20

# the data, split between train and test sets
(x_train, y_train), (x_test, y_test) = mnist.load_data()

x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
x_train /= 255
x_test /= 255
print(x_train.shape[0], 'train samples')
print(x_test.shape[0], 'test samples')

# convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Dense(512, activation='relu', input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation='relu'))
model.add(Dropout(0.2))
model.add(Dense(num_classes, activation='softmax'))

model.summary()

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

history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

これを実行すると画像データのダウンロードが始まり、そののちに学習がはじまります。

数分すると終了します。損失が0.12で精度が0.9839という結果になりました。MNISTならこんなもんだと思います。

まとめ

Google Colabを動かしてみました。無料で使えるJupyter Notebookなのでそれだけでも結構便利ですが、GPUも使えてしまうので侮れないなと思いました。今後色々遊んでみたいなと思います。

Kerasの勉強には以下の本が役立ちます。プログラムだけでなく理論も丁寧なのでありがたいです。

PythonとKerasによるディープラーニング
Francois Chollet
マイナビ出版 (2018-05-28)
売り上げランキング: 8,414
スポンサードリンク

-google, GPU, Python, ディープラーニング

Copyright© めめんと , 2019 All Rights Reserved Powered by AFFINGER5.