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

PythonとKerasで事前学習済みモデルを活用する方法を徹底解説

TensorFlowとKerasとは

TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて使用することで、アルゴリズムの実装やディープラーニングアプリケーションの開発など、幅広い用途に活用できます。研究目的から本番環境での運用まで、多くの現場で採用されている信頼性の高いフレームワークです。

Kerasはギリシャ語で「角(つの)」を意味する言葉に由来します。ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System)というプロジェクトの研究成果の一部として開発されました。KerasはPythonで書かれたディープラーニングAPIであり、機械学習の問題解決を支援する生産性の高いインターフェースを持つ高水準APIです。

KerasはTensorFlowフレームワークの上で動作し、迅速な実験を支援するために設計されています。機械学習ソリューションの開発やカプセル化に不可欠な抽象化機能とビルディングブロックを提供しています。

また、高いスケーラビリティとクロスプラットフォーム対応力が特徴で、TPUやGPUクラスタ上でも実行可能です。さらに、KerasモデルはWebブラウザやモバイルデバイス向けにエクスポートすることもできます。

Kerasのインポート方法

KerasはTensorFlowパッケージにすでに含まれているため、以下のコード行だけでアクセスできます。

import tensorflow
from tensorflow import keras

以下のコードはGoogle Colaboratoryで実行しています。Google Colab(Colaboratory)を利用すると、ブラウザ上でPythonコードを実行でき、設定不要でGPU(グラフィックス処理装置)にも無料でアクセスできます。ColaboratoryはJupyter Notebookをベースに構築されています。

サンプルコード:事前学習済みモデルの読み込みと転移学習

print("事前学習済みの重みを持つ畳み込みモデルを読み込みます")
base_model = keras.applications.Xception(
    weights='imagenet',
    include_top=False,
    pooling='avg')
print("このモデルをフリーズ(凍結)します")
base_model.trainable = False
print("Sequentialモデルを使ってベースモデルの上に学習可能な分類器を追加します")
model = keras.Sequential([
    base_model,
    layers.Dense(1000),
])
print("モデルをコンパイルします")
print("モデルをテストデータに適合させます")
model.compile(...)
model.fit(...)

コード出典:https://www.tensorflow.org/guide/keras/sequential_model

実行結果

事前学習済みの重みを持つ畳み込みモデルを読み込みます
Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/xception/xception_weights_tf_dim_ordering_tf_kernels_notop.h5
83689472/83683744 [==============================] - 1s 0us/step
このモデルをフリーズ(凍結)します
Sequentialモデルを使ってベースモデルの上に学習可能な分類器を追加します
モデルをコンパイルします
モデルをテストデータに適合させます

コードの解説

  • Sequentialモデルのスタックを利用し、事前学習済みモデルを活用して分類レイヤーを初期化します。

  • モデルの構築が完了したら、次にコンパイルを行います。

  • コンパイルが完了すると、このモデルを訓練データに適合させて学習させることができます。

この手法は「転移学習」と呼ばれ、ImageNetなどの大規模データセットで学習済みの重みを再利用することで、少ないデータ量や計算資源でも高精度な画像分類モデルを効率的に構築できる点が大きなメリットです。ベースモデルをフリーズすることで、既存の学習済み特徴を保持しながら、新しく追加した分類層のみを学習させることができます。

  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)」は、データを扱うための基本的なデータ構造です。テンソルは多次元配列(またはリスト)であり、データフローグラフと呼ばれる計算グラフのノード同士をエッジでつ