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

Kerasを使ってPythonで転移学習を実装する方法|手順とサンプルコードを解説

TensorFlowとKerasとは

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

テンソル(Tensor)とは

テンソルはTensorFlowで使用される基本的なデータ構造です。データフローグラフと呼ばれるフロー図において、ノード間のエッジをつなぐ役割を担います。テンソルの中身は、多次元配列またはリストそのものです。

Kerasの概要と特徴

Kerasはギリシャ語で「角(horn)」を意味します。ONEIROS(Open ended Neuro-Electronic Intelligent Robot Operating System:開放型神経電子知能ロボット用オペレーティングシステム)プロジェクトの研究の一環として開発された、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(グラフィックス処理装置)にも無料でアクセスできます。Jupyter Notebookをベースに構築されている点も特徴です。

転移学習のサンプルコード

以下は、KerasのSequentialモデルを使って転移学習を実装するコード例です。

model = keras.Sequential([
    keras.Input(shape=(784)),
    layers.Dense(32, activation='relu'),
    layers.Dense(32, activation='relu'),
    layers.Dense(32, activation='relu'),
    layers.Dense(10),
])
print("事前学習済みの重みを読み込む")
model.load_weights(...)
print("最終("最終層以外のすべての層を凍結する")
for layer in model.layers[:-1]:
    layer.trainable = False
print("モデルを再コンパイルして学習する")
print("最終層の重みのみが更新される")
model.compile(...)
model.fit(...)

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

出力結果

事前学習済みの重みを読み込む
最終層以外のすべての層を凍結する
モデルを再コンパイルして学習する
最終層の重みのみが更新される

コードの解説

  • 転移学習とは、モデルの下位層(ボトム層)を凍結し、上位層のみを新たに学習させる手法のことです。

  • まず、Sequentialモデルを構築します。

  • 既存モデルの事前学習済み重みを読み込み、このモデルに適用します。

  • 最終層を除く下位の層を凍結します。

  • 各層を順番に走査し、最終査し、最終層以外のすべての層に対して「layer.trainable」を「False」に設定します。

  • 最後にモデルをコンパイルし、データに適合させて学習を実行します。

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