- Neural NetworkとTensorflowについて
- 画像の処理について
- CNNの学習(Keras)について
- Google Colabについて(今回記事)
- AutoKerasについて
Google colabは計算が早い!
数字を認識するConvolutional Neural Network (CNN)をkerasで作ってきました。前回の記事までで、一通り(画像用意→学習→予想)を実施できるようになりました。ただ、tensorflowを学習させると非常に時間がかかります。以下のようなCNN(Total params: 79,446,752)を設計し、GPU搭載デスクトップパソコンでepochを10で学習させると、CPUだと68分36秒、GPUだと4分38秒かかりました。
詳細 | 学習までにかかった時間 | |
CPU | Core i5 3.2GHz 4core 4threds | 68分36秒 |
GPU | NVIDIA GeForce GTX 1650 | 4分38秒 |
Layer (type) | Output Shape | Param # |
conv2d (Conv2D) | (None, 140, 290, 32) | 11648 |
activation (Activation) | (None, 140, 290, 32) | 0 |
max_pooling2d (MaxPooling2D) | (None, 70, 145, 32) | 0 |
conv2d_1 (Conv2D) | (None, 68, 143, 64) | 18496 |
activation_1 (Activation) | (None, 68, 143, 64) | 0 |
max_pooling2d_1 (MaxPooling2D) | (None, 34, 71, 64) | 0 |
flatten (Flatten) | (None, 154496) | 0 |
dense (Dense) | (None, 514) | 79411458 |
activation_2 (Activation) | (None, 514) | 0 |
dropout (Dropout) | (None, 514) | 0 |
dense_1 (Dense) | (None, 10) | 5150 |
activation_3 (Activation) | (None, 10) | 0 |
Total params: 79,446,752
Trainable params: 79,446,752
Non-trainable params: 0
GPUで計算させるとすごいスピードになるのですが、私のノートパソコンにはGPUがありません。GPUを使いたいけど、ない。そんなときに便利なのがGoogle colabです。Google colabは無料でGPUを使わせてくれます。必要なのはgoogleのアカウントだけです。GPU使用には電気代もかかるのにありがたいです。Google colabではGPUのほかにTPUというのも使わせてくれます。GPUよりTPUの方が理論上早いらしいですが、私のコードではGPUのほうが断然早いです。
Google Colabの使いどころ
Google colabには弱点があります。ファイルの読み込みや書き出しといった操作がとても遅いです。そのため、tensorflowの学習だけをColabでやった方がいいと思います。以下の流れがいい使い方だと思います。
ローカルパソコンで画像処理や訓練データの作成 ⇢
Google Driveに訓練データをアップロード ⇢
Google Colabで学習 ⇢
Google Driveに学習モデルを書き出し ⇢
Google Driveから学習モデルをダウンロード
Google colabのTips
使い方はjupyter notebookと同じなのでjupyter使っている人にはすぐに使えます。ただ、ファイルの操作はどうするのかと、コマンドラインを使うにはどうしたらいいのかという疑問があると思います。その方法についてメモしておきます。
GPUの使用方法
まずは、GPUを使う準備をします。上のタブからランタイムを選択し、ランタイムのタイプを選択します。ここでGPUを選択します。選択しないとGPU使わしてくれません。TPUも選択できます。
ファイルの操作について
Google Driveに接続することでGoogle Driveをフォルダのように扱えます。
from google.colab import drive
drive.mount("/content/drive")
上記のコードを実行すると、以下のようなpromptがでます。URLをクリックしてauthorization codeを入手して枠内にコピペしてエンターをおします。
すると、左側のタブからGoogle Drive内のフォルダにアクセスできるようになっています。
ファイルを選択して、右クリックで「パスをコピー」「ダウンロード」ができます。
Google Driveにないファイルをアップロードする場合には、以下のコードを実行します。myfileにファイルが代入されます。ただ、この操作は非常に遅いのでお勧めしません。
from google.colab import files
myfile = files.upload()
Tensorflowモデルの保存方法
model = sequential()でモデルを作ったのち、model.fit()した後にモデルを保存します。
# model.fit()をした後
model.save("/content/drive/MyDrive/CNNmodel.h5")
保存したモデルは、左側のパネルで選択して右クリックでダウンロードできます。
保存したモデルを呼び出します。
import tensorflow as tf
my_model = tf.keras.models.load_model("/content/drive/MyDrive/CNNmodel.h5")
コマンドプロンプトの使い方
!を先頭につけるだけでコマンドプロンプトになります。
!pip install autokeras
Tensorboardの使い方
まずはtensorboardを起動しておきます。
%load_ext tensorboard
callbackをつけて学習させます。checkpointが不要な人は外してください。
from tensorflow.keras.callbacks import TensorBoard,ModelCheckpoint
import datetime, os
checkpointer = ModelCheckpoint(filepath='logs',
verbose=1,
save_best_only=True)
logdir = os.path.join("logs", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
model.fit(x = X_train, y= Y_train,
epochs = 50,
validation_split=0.1,
callbacks = [tensorboard_callback, checkpointer])
学習中でも学習後でも以下のコマンドでtensorboardを起動できます。少し起動に時間がかかります。
%tensorboard --logdir logs