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

Kerasモデルを単なるレイヤーとして扱い、Pythonを使用して呼び出すことはできますか?はいの場合、それを示します


Tensorflowは、Googleが提供する機械学習フレームワークです。これは、Pythonと組み合わせて使用​​されるオープンソースのフレームワークであり、アルゴリズム、深層学習アプリケーションなどを実装します。研究や生産目的で使用されます。

Kerasは、プロジェクトONEIROS(オープンエンドの神経電子インテリジェントロボットオペレーティングシステム)の研究の一環として開発されました。 Kerasは、Pythonで記述されたディープラーニングAPIです。これは、機械学習の問題を解決するのに役立つ生産的なインターフェースを備えた高レベルのAPIです。 Tensorflowフレームワーク上で実行されます。迅速な実験を支援するために構築されました。機械学習ソリューションの開発とカプセル化に不可欠な、本質的な抽象化とビルディングブロックを提供します。

非常にスケーラブルで、クロスプラットフォーム機能が付属しています。これは、KerasをTPUまたはGPUのクラスターで実行できることを意味します。 Kerasモデルをエクスポートして、Webブラウザや携帯電話で実行することもできます。

KerasはすでにTensorflowパッケージに含まれています。以下のコード行を使用してアクセスできます。

import tensorflow
from tensorflow import keras

はい、Kerasモデルは単なるレイヤーとして扱われ、Pythonを使用して呼び出されます。 Keras機能APIは、シーケンシャルAPIを使用して作成されたモデルと比較してより柔軟なモデルを作成するのに役立ちます。機能APIは、非線形トポロジを持つモデルで動作し、レイヤーを共有し、複数の入力と出力で動作します。深層学習モデルは通常、複数のレイヤーを含む有向非巡回グラフ(DAG)です。機能APIは、レイヤーのグラフを作成するのに役立ちます。

Google Colaboratoryを使用して、以下のコードを実行しています。 Google ColabまたはColaboratoryは、ブラウザー上でPythonコードを実行するのに役立ち、構成が不要で、GPU(グラフィックプロセッシングユニット)に無料でアクセスできます。 Colaboratoryは、JupyterNotebookの上に構築されています。以下は、Kerasモデルをレイヤーとして扱い、Pythonを使用して呼び出されるコードスニペットです-

Encoder_input = keras.Input(shape=(28, 28, 1), name=”original_img”)
print("Adding layers to the model")
x = layers.Conv2D(16, 3, activation="relu")(encoder_input)
x = layers.Conv2D(32, 3, activation="relu")(x)
x = layers.MaxPooling2D(3)(x)
x = layers.Conv2D(32, 3, activation="relu")(x)
x = layers.Conv2D(16, 3, activation="relu")(x)
print("Performing golbal max pooling")
encoder_output = layers.GlobalMaxPooling2D()(x)

print("Creating a model using the layers")
encoder = keras.Model(encoder_input, encoder_output, name="encoder")
print("More information about the model")
encoder.summary()
decoder_input = keras.Input(shape=(16,), name="encoded_img")
print("Reshaping the layers in the model")
x = layers.Reshape((4, 4, 1))(decoder_input)
x = layers.Conv2DTranspose(16, 3, activation="relu")(x)
x = layers.Conv2DTranspose(32, 3, activation="relu")(x)
x = layers.UpSampling2D(3)(x)
x = layers.Conv2DTranspose(16, 3, activation="relu")(x)
decoder_output = layers.Conv2DTranspose(1, 3, activation="relu")(x)
print("Creating a model using the layers")
decoder = keras.Model(decoder_input, decoder_output, name="decoder")
print("More information about the model")
decoder.summary()

autoencoder_input = keras.Input(shape=(28, 28, 1), name="img")
encoded_img = encoder(autoencoder_input)
decoded_img = decoder(encoded_img)
autoencoder = keras.Model(autoencoder_input, decoded_img, name="autoencoder")
print("More information about the model")
autoencoder.summary()

コードクレジット-https://www.tensorflow.org/guide/keras/functional

出力

original_img (InputLayer)    [(None, 28, 28, 1)]       0
_________________________________________________________________
conv2d_28 (Conv2D)          (None, 26, 26, 16)       160
_________________________________________________________________
conv2d_29 (Conv2D)          (None, 24, 24, 32)       4640
_________________________________________________________________
max_pooling2d_7 (MaxPooling2 (None, 8, 8, 32)          0
_________________________________________________________________
conv2d_30 (Conv2D)          (None, 6, 6, 32)          9248
_________________________________________________________________
conv2d_31 (Conv2D)          (None, 4, 4, 16)          4624
_________________________________________________________________
global_max_pooling2d_3       (Glob (None, 16)          0
=================================================================
Total params: 18,672
Trainable params: 18,672
Non-trainable params: 0
_________________________________________________________________
Reshaping the layers in the model
Creating a model using the layers
More information about the model
Model: "decoder"
_________________________________________________________________
Layer (type)                Output Shape             Param #
=================================================================
encoded_img (InputLayer)    [(None, 16)]             0
_________________________________________________________________
reshape_1 (Reshape)          (None, 4, 4, 1)         0
_________________________________________________________________
conv2d_transpose_4 (Conv2DTr (None, 6, 6, 16)       160
_________________________________________________________________
conv2d_transpose_5 (Conv2DTr (None, 8, 8, 32)       4640
_________________________________________________________________
up_sampling2d_1 (UpSampling2 (None, 24, 24, 32)       0
_________________________________________________________________
conv2d_transpose_6 (Conv2DTr (None, 26, 26, 16)      4624
_________________________________________________________________
conv2d_transpose_7 (Conv2DTr (None, 28, 28, 1)       145
=================================================================
Total params: 9,569
Trainable params: 9,569
Non-trainable params: 0
_________________________________________________________________
More information about the model
Model: "autoencoder"
_________________________________________________________________
Layer (type)             Output Shape          Param #
=================================================================
img (InputLayer)       [(None, 28, 28, 1)]       0
_________________________________________________________________
encoder (Functional)    (None, 16)             18672
_________________________________________________________________
decoder (Functional)    (None, 28, 28, 1)       9569
=================================================================
Total params: 28,241
Trainable params: 28,241
Non-trainable params: 0
_________________________________________________________________

説明

  • 別のレイヤーの「入力」または出力でモデルを呼び出すことにより、任意のモデルをレイヤーとして扱うことができます。

  • モデルが呼び出されると、アーキテクチャが再利用されます。

  • さらに、ウェイトも再利用されています。

  • オートエンコーダモデルは、エンコーダモデル、デコーダモデルを使用して作成できます。

  • これらの2つのモデルは、オートエンコーダモデルを取得するために2つの呼び出しにチェーンされます。


  1. Pythonを使用してモデルをプロットするためにKerasをどのように使用できますか?

    Tensorflowは、Googleが提供する機械学習フレームワークです。これは、Pythonと組み合わせて使用​​されるオープンソースのフレームワークであり、アルゴリズム、深層学習アプリケーションなどを実装します。それは研究および生産目的で使用されます。複雑な数学演算をすばやく実行するのに役立つ最適化手法があります。 Tensorは、TensorFlowで使用されるデータ構造です。フロー図のエッジを接続するのに役立ちます。このフロー図は「データフローグラフ」と呼ばれます。テンソルは多次元配列またはリストに他なりません。 Kerasは、プロジェクトONEIROS(オープンエンドの神経電子イン

  2. Kerasを使用してモデルをグラフとしてプロットし、Pythonを使用して入力および出力の形状を表示するにはどうすればよいですか?

    Tensorflowは、Googleが提供する機械学習フレームワークです。これは、Pythonと組み合わせて使用​​されるオープンソースのフレームワークであり、アルゴリズムや深層学習アプリケーションなどを実装します。それは研究および生産目的で使用されます。複雑な数学演算をすばやく実行するのに役立つ最適化手法があります。 Tensorは、TensorFlowで使用されるデータ構造です。フロー図のエッジを接続するのに役立ちます。このフロー図は「データフローグラフ」と呼ばれます。テンソルは多次元配列またはリストに他なりません。 Kerasは、プロジェクトONEIROS(オープンエンドの神経電子イン