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

TensorFlowとPythonで正規化レイヤーを構築する方法【サンプルコード付き】

TensorFlowを使えば、正規化レイヤーを簡単に構築できます。手順としては、まずクラス名をNumPy配列に変換し、次にtf.keras.layers.experimental.preprocessingパッケージに含まれる「Rescaling」メソッドを使用して正規化レイヤーを作成します。

畳み込みニューラルネットワークと転移学習の基礎

少なくとも1つの層を含むニューラルネットワークには畳み込み層が使われており、畳み込みニューラルネットワーク(CNN)を利用することで学習モデルを構築できます。

画像分類における転移学習の直感的な考え方は、「大規模で汎用的なデータセットで訓練されたモデルは、視覚世界における汎用モデルとして効果的に機能できる」というものです。このようなモデルはすでに特徴マップを学習済みのため、ユーザーは大規模なデータセットを使って大規模なモデルをゼロから訓練する必要がありません。

TensorFlow Hubは、事前訓練済みのTensorFlowモデルを集めたリポジトリです。TensorFlowを活用すれば、これらの学習モデルをファインチューニングすることも可能です。

ここでは、TensorFlow Hubのモデルをtf.kerasと組み合わせて使う方法を解説します。まずTensorFlow Hubから画像分類モデルを取得し、その後、転移学習によってカスタム画像クラス向けにモデルをファインチューニングします。事前訓練済みの分類器モデルに画像を入力して何が写っているかを予測させるだけでよく、追加の訓練は一切不要です。

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

コード例

print("It contains 5 classes")
class_names = np.array(train_ds.class_names)
print(class_names)
print("A normalization layer is built")
normalization_layer = tf.keras.layers.experimental.preprocessing.Rescaling(1./255)
train_ds = train_ds.map(lambda x, y: (normalization_layer(x), y))

コード出典:https://www.tensorflow.org/tutorials/images/transfer_learning_with_hub

出力結果

It contains 5 classes
['daisy' 'dandelion' 'roses' 'sunflowers' 'tulips']
A normalization layer is built

解説

  • TFHubの画像モデルの規約では、[0, 1]の範囲に収まるfloat型の入力値が求められます。

  • Rescalingレイヤーを使うことで、この要件を簡単に満たせます。

  • バッファ付きプリフェッチ(Buffered Prefetching)を活用すると、I/Oブロッキングを発生させずにディスクからデータを読み込めるようになります。

  1. TensorFlowとPythonで線形モデルをトレーニングする方法を解説

    TensorFlowとは TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせて各種アルゴリズムやディープラーニングアプリケーションなどを実装できます。研究用途だけでなく、本番環境(プロダクション)でも幅広く利用されています。 TensorFlowのインストール方法 Windows環境では、以下のコマンドを実行するだけで「tensorflow」パッケージをインストールできます。 pip install tensorflow テンソル(Tensor)とは何か テンソルはTensorFlowにおける基本的なデータ

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

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