Pythonを使用したエンコーダーとデコーダーを使用してオートエンコーダーを生成するにはどうすればよいですか?
Tensorflowは、Googleが提供する機械学習フレームワークです。これは、Pythonと組み合わせて使用されるオープンソースのフレームワークであり、アルゴリズム、深層学習アプリケーションなどを実装します。研究や生産目的で使用されます。
「tensorflow」パッケージは、以下のコード行を使用してWindowsにインストールできます-
pip install tensorflow
Tensorは、TensorFlowで使用されるデータ構造です。フロー図のエッジを接続するのに役立ちます。このフロー図は「データフローグラフ」と呼ばれます。テンソルは多次元配列またはリストに他なりません。
Kerasは、プロジェクトONEIROS(オープンエンドの神経電子インテリジェントロボットオペレーティングシステム)の研究の一環として開発されました。 Kerasは、Pythonで記述されたディープラーニングAPIです。これは、機械学習の問題を解決するのに役立つ生産的なインターフェースを備えた高レベルのAPIです。 Tensorflowフレームワーク上で実行されます。迅速な実験を支援するために構築されました。機械学習ソリューションの開発とカプセル化に不可欠な、本質的な抽象化とビルディングブロックを提供します。
KerasはすでにTensorflowパッケージに含まれています。以下のコード行を使用してアクセスできます。
import tensorflow from tensorflow import keras
Keras機能APIは、シーケンシャルAPIを使用して作成されたモデルと比較してより柔軟なモデルを作成するのに役立ちます。機能APIは、非線形トポロジを持つモデルで動作し、レイヤーを共有し、複数の入力と出力で動作します。深層学習モデルは通常、複数のレイヤーを含む有向非巡回グラフ(DAG)です。機能APIは、レイヤーのグラフを作成するのに役立ちます。
以下のコードを実行するためにGoogleColaboratoryを使用しています。 Google ColabまたはColaboratoryは、ブラウザー上でPythonコードを実行するのに役立ち、構成が不要で、GPU(グラフィックプロセッシングユニット)に無料でアクセスできます。 Colaboratoryは、JupyterNotebookの上に構築されています。以下は、エンコーダーとデコーダーを使用してオートエンコーダーがどのように生成されるかを示すコードスニペットです-
例
encoder_input = keras.Input(shape=(28, 28, 1), name="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 global 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() print("Reshaping the layers in the model") x = layers.Reshape((4, 4, 1))(encoder_output) 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) autoencoder = keras.Model(encoder_input, decoder_output, name="autoencoder") print("More information about the autoencoder") autoencoder.summary()
コードクレジット-https://www.tensorflow.org/guide/keras/functional
出力
Adding layers to the model Performing global max pooling Creating a model using the layers More information about the model Model: "encoder" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= img (InputLayer) [(None, 28, 28, 1)] 0 _________________________________________________________________ conv2d (Conv2D) (None, 26, 26, 16) 160 _________________________________________________________________ conv2d_1 (Conv2D) (None, 24, 24, 32) 4640 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 8, 8, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 6, 6, 32) 9248 _________________________________________________________________ conv2d_3 (Conv2D) (None, 4, 4, 16) 4624 _________________________________________________________________ global_max_pooling2d (Global (None, 16) 0 ================================================================= Total params: 18,672 Trainable params: 18,672 Non-trainable params: 0 _________________________________________________________________ Reshaping the layers in the model More information about the autoencoder Model: "autoencoder" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= img (InputLayer) [(None, 28, 28, 1)] 0 _________________________________________________________________ conv2d (Conv2D) (None, 26, 26, 16) 160 _________________________________________________________________ conv2d_1 (Conv2D) (None, 24, 24, 32) 4640 _________________________________________________________________ max_pooling2d (MaxPooling2D) (None, 8, 8, 32) 0 _________________________________________________________________ conv2d_2 (Conv2D) (None, 6, 6, 32) 9248 _________________________________________________________________ conv2d_3 (Conv2D) (None, 4, 4, 16) 4624 _________________________________________________________________ global_max_pooling2d (Global (None, 16) 0 _________________________________________________________________ reshape (Reshape) (None, 4, 4, 1) 0 _________________________________________________________________ conv2d_transpose (Conv2DTran (None, 6, 6, 16) 160 _________________________________________________________________ conv2d_transpose_1 (Conv2DTr (None, 8, 8, 32) 4640 _________________________________________________________________ up_sampling2d (UpSampling2D) (None, 24, 24, 32) 0 _________________________________________________________________ conv2d_transpose_2 (Conv2DTr (None, 26, 26, 16) 4624 _________________________________________________________________ conv2d_transpose_3 (Conv2DTr (None, 28, 28, 1) 145 ================================================================= Total params: 28,241 Trainable params: 28,241 Non-trainable params: 0 _________________________________________________________________
説明
-
モデルにレイヤーが追加されます。
-
グローバル最大プーリングはこれらのレイヤーで実行されます
-
モデルはレイヤーを使用して作成されます。
-
モデルに関する詳細情報は、「概要」メソッドを使用して表示できます。
-
機能APIを使用して、レイヤーのグラフの入力と出力を指定した後にモデルが作成されます。
-
これは、単一のグラフを使用して複数のモデルを生成できることを示しています。
-
ここでは、レイヤーのスタックを使用して、画像入力を16次元ベクトルに変換するエンコーダーとトレーニングに使用されるオートエンコーダーモデルの2つのモデルをインスタンス化します。
-
BokehとPythonを使用して垂直棒グラフを視覚化するにはどうすればよいですか?
Bokehは、データの視覚化に役立つPythonパッケージです。これはオープンソースプロジェクトです。 Bokehは、HTMLとJavaScriptを使用してプロットをレンダリングします。これは、Webベースのダッシュボードでの作業中に役立つことを示しています。 Bokehは、NumPy、Pandas、およびその他のPythonパッケージと組み合わせて簡単に使用できます。インタラクティブなプロットやダッシュボードなどを作成するために使用できます。 BokehはデータソースをJSONファイルに変換します。このファイルは、JavaScriptライブラリであるBokehJSへの入力として使用され
-
matplotlibとPythonを使用して、複数のプロットを同じ図にプロットするにはどうすればよいですか?
Matplotlibは、データの視覚化に使用される人気のあるPythonパッケージです。 データを視覚化することは、実際に数値を調べたり複雑な計算を実行したりすることなく、データで何が起こっているのかを理解するのに役立つため、重要なステップです。 定量的な洞察を聴衆に効果的に伝えるのに役立ちます。 Matplotlibは、データを使用して2次元プロットを作成するために使用されます。 Pythonアプリケーションにプロットを埋め込むのに役立つオブジェクト指向APIが付属しています。 Matplotlibは、IPythonシェル、Jupyterノートブック、SpyderIDEなどで使用できま