Python
 Computer >> コンピューター >  >> プログラミング >> Python

Kerasでモデルをトレーニング・評価・推論する方法を徹底解説

TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く使われています。研究用途から本番環境まで幅広く活用されており、複雑な数学的演算を高速に処理するための最適化技術を備えているのが特徴です。

「tensorflow」パッケージは、Windows環境では以下のコマンドでインストールできます。

pip install tensorflow

Kerasは、ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)というプロジェクトの研究の一環として開発されました。Pythonで記述されたディープラーニングAPIであり、機械学習の課題を効率的に解決するための生産性の高いインターフェースを備えた高レベルAPIです。

Kerasは高いスケーラビリティとクロスプラットフォーム対応力を持っています。そのため、TPUやGPUクラスタ上での実行が可能で、Kerasで構築したモデルはWebブラウザやモバイルデバイス向けにエクスポートして動かすこともできます。

KerasはTensorFlowパッケージにあらかじめ含まれており、以下のコードで簡単に利用できます。

import tensorflow
from tensorflow import keras

Kerasの関数型API(Functional API)を使用すると、Sequential APIで作成するモデルよりも柔軟なモデルを構築できます。非線形トポロジーを持つモデルや、レイヤーの共有、複数の入力・出力を持つモデルにも対応可能です。一般的にディープラーニングモデルは、複数のレイヤーを含む有向非巡回グラフ(DAG)として表現され、関数型APIはこのレイヤーグラフの構築を強力にサポートします。

以下のコードはGoogle Colaboratoryで実行しています。Google Colab(Colaboratory)を利用すると、ブラウザ上でPythonコードを実行でき、事前設定は一切不要で、GPU(Graphical Processing Unit)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。

コード例

print("Load the MNIST data")
print("Split data into training and test data")
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
print("Reshape the data for better training")
x_train = x_train.reshape(60000, 784).astype("float32") / 255
x_test = x_test.reshape(10000, 784).astype("float32") / 255
print("Compile the model")
model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=keras.optimizers.RMSprop(),
    metrics=["accuracy"],
)
print("Fit the data to the model")
history = model.fit(x_train, y_train, batch_size=64, epochs=2, validation_split=0.2)
test_scores = model.evaluate(x_test, y_test, verbose=2)
print("The loss associated with model:", test_scores[0])
print("The accuracy of the model:", test_scores[1])

コード引用元:https://www.tensorflow.org/guide/keras/functional

出力結果

Load the MNIST data
Split data into training and test data
Reshape the data for better training
Compile the model
Fit the data to the model
Epoch 1/2
750/750 [==============================] - 3s 3ms/step - loss: 0.5768 - accuracy: 0.8394 -
val_loss: 0.2015 - val_accuracy: 0.9405
Epoch 2/2
750/750 [==============================] - 2s 3ms/step - loss: 0.1720 - accuracy: 0.9495 -
val_loss: 0.1462 - val_accuracy: 0.9580
313/313 - 0s - loss: 0.1433 - accuracy: 0.9584
The loss associated with model: 0.14328785240650177
The accuracy of the model: 0.9584000110626221

処理の流れと解説

  • 入力データとして手書き数字画像の定番データセット「MNIST」を環境に読み込みます。

  • 読み込んだデータを訓練用データとテスト用データに分割します。

  • 学習精度を高めるために、データを784次元(28×28ピクセル)の形式へリシェイプし、0〜1の範囲に正規化します。

  • 損失関数・最適化手法・評価指標を指定して、モデルをビルドおよびコンパイルします。

  • 訓練データに対してモデルを適合させます。ここではbatch_size=64、epochs=2、検証データ分割率20%を指定しています。

  • テストデータでevaluateメソッドにより評価を行い、モデルの損失と精度がコンソールに出力されます。

このように、Kerasを使えばデータの準備からモデルのコンパイル、学習、評価までを一貫して簡潔なコードで実装できます。わずか2エポックの学習でも約95.8%という高い認識精度が得られており、Kerasの使いやすさと高性能さがわかります。

  1. Kerasのplot_model関数を使ってモデル構造を可視化する方法【Python】

    Kerasはギリシャ語で「角(ホーン)」を意味します。ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)というプロジェクトの研究の一環として開発された、Pythonで書かれたディープラーニングAPIです。機械学習の問題解決を効率的に行うための、生産性の高いインターフェースを備えた高水準APIとなっています。 KerasはTensorFlowフレームワークの上で動作し、素早く実験を行えるよう設計されています。機械学習ソリューションの開発とカプセル化に不可欠な抽象化機能やビルディングブロックを提供してくれる

  2. Kerasを使ってPythonでモデルをプロットする方法をわかりやすく解説

    TensorFlowとはTensorFlowは、Googleが提供している機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで対応しており、複雑な数値計算を高速に実行するための最適化技術が数多く組み込まれています。TensorFlowにおける「テンソル(Tensor)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ