はじめに
こんにちは、SHOU です!今回は、Google Colabを使って、Kerasライブラリで手書き数字(MNIST)の画像分類に挑戦してみます。
Colabは、Googleが提供する無料のクラウドサービスで、GPUも無料で使えるので、初心者でも簡単にディープラーニングを試せるのが魅力です。これからAIや機械学習を学びたい方に、最初の一歩としておすすめの内容です。
Google Colabとは?
Google Colab(Colaboratory)は、ブラウザ上でPythonコードが実行できる環境で、TensorFlowやKerasなどのライブラリが最初からインストール済み。特別なセットアップ不要で、すぐに使い始めることができます。 無料でGPU・TPUが使える ノートブックを共有できる 学習・開発環境として非常に便利環境準備:ColabでGPUを有効化する
まずは、Google Colabを開きましょう。そしてGPUを使う設定にします。 設定方法:上部メニューから
[ランタイム]
→ [ランタイムのタイプを変更]
を選びます。「ハードウェアアクセラレータ」を GPU に設定して 保存。 GPUを選ぶことで、学習スピードが大幅アップします。
必要なライブラリのインポート
TensorFlowとKerasを使います。最初に以下のコードを実行しておきましょう。バージョンが表示されれば準備OKです。
- import tensorflow as tf
- from tensorflow import keras
- import numpy as np
- print("TensorFlowバージョン:", tf.__version__)
データの準備
今回はKeras内蔵のMNIST(手書き数字データセット)を使います。このデータは、28×28ピクセルの手書き数字(0~9)の画像が含まれています。
- # MNISTデータを読み込み
- (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
- # データを0~1の範囲に正規化
- x_train = x_train / 255.0
- x_test = x_test / 255.0
モデルの作成
今回はシンプルな全結合ネットワークを構築します。
- model = keras.models.Sequential([
- keras.Input(shape=(28, 28)),
- keras.layers.Flatten(),
- keras.layers.Dense(128, activation='relu'),
- keras.layers.Dropout(0.2),
- keras.layers.Dense(10, activation='softmax')
- ])
- model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])
- Flatten:28×28の画像を1次元に変換
- Dense:全結合層(128ユニット)
- Dropout:過学習防止
- Dense(出力層):10クラス分類
学習と評価
いよいよ学習&評価です。5エポック程度なら、GPUを使うと数分で完了します。
- # モデルを学習(5エポック)
- model.fit(x_train, y_train, epochs=5)
- # テストデータで評価
- test_loss, test_acc = model.evaluate(x_test, y_test)
- print(f"テスト精度: {test_acc:.3f}")
結果とまとめ
私の環境では、テスト精度: 約0.98(=約98%)が出ました。シンプルなモデルでも、手書き数字はかなりの高精度で分類できることがわかります。 Google Colabは、無料&簡単に使えるので、これから機械学習を始めたい方には本当におすすめです。次回は、自分のデータセットを使ったり、畳み込みニューラルネットワーク(CNN)に挑戦して、さらに高精度を目指してみましょう!
0 件のコメント:
コメントを投稿