1. Neural NetworkとTensorflowについて
  2. 画像の処理について
  3. CNNの学習(Keras)について
    1. CNNに学習させてモデルを保存する
    2. 保存した学習したモデルを使って予測を行う
  4. Google Colabについて(今回記事)
  5. AutoKerasについて

Google colabは計算が早い!

数字を認識するConvolutional Neural Network (CNN)をkerasで作ってきました。前回の記事までで、一通り(画像用意→学習→予想)を実施できるようになりました。ただ、tensorflowを学習させると非常に時間がかかります。以下のようなCNN(Total params: 79,446,752)を設計し、GPU搭載デスクトップパソコンでepochを10で学習させると、CPUだと68分36秒、GPUだと4分38秒かかりました。

詳細学習までにかかった時間
CPUCore i5 3.2GHz 4core 4threds68分36秒
GPUNVIDIA GeForce GTX 16504分38秒
Layer (type)Output ShapeParam #
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

Categories:

category