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

TensorFlowとPythonでモデルの最上位にDense層(全結合層)を追加する方法

Dense層の追加方法

SequentialモデルにDense層(全結合層)を追加するには、addメソッドを使用し、層の種類としてDenseを指定します。まず畳み込みベースの出力をFlatten層で平坦化し、その上に新しい層を積み重ねます。こうして追加された層は、トレーニングデータセット全体に対して適用されます。

関連記事: TensorFlowとは何か? KerasとTensorFlowが連携してニューラルネットワークを構築する仕組み

本記事では、KerasのSequential APIを使用します。これは、各層が必ず1つの入力テンソルと1つの出力テンソルを持つ、単純な層のスタックからなるシーケンシャルモデルを構築する際に非常に便利なAPIです。

以下のコードは、Google Colaboratory上で実行しています。Google Colab(Colaboratory)はブラウザ上で直接Pythonコードを実行できる環境であり、事前の設定が一切不要で、GPU(Graphics Processing Unit)にも無料でアクセスできます。ColaboratoryはJupyter Notebookを基盤として構築されています。

print("Adding dense layer on top")
model.add(layers.Flatten())
model.add(layers.Dense(64, activation='relu'))
model.add(layers.Dense(10))
print("Complete architecture of the model")
model.summary()

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

出力結果

Adding dense layer on top
Complete architecture of the model
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_3 (Conv2D)            (None, 30, 30, 32)        896       
_________________________________________________________________
max_pooling2d_2 (MaxPooling2 (None, 15, 15, 32)        0         
_________________________________________________________________
conv2d_4 (Conv2D)            (None, 13, 13, 64)        18496     
_________________________________________________________________
max_pooling2d_3 (MaxPooling2 (None, 6, 6, 64)          0         
_________________________________________________________________
conv2d_5 (Conv2D)            (None, 4, 4, 64)          36928     
_________________________________________________________________
flatten (Flatten)            (None, 1024)              0         
_________________________________________________________________
dense (Dense)                (None, 64)                65600     
_________________________________________________________________
dense_1 (Dense)              (None, 10)                650       
=================================================================
Total params: 122,570
Trainable params: 122,570
Non-trainable params: 0
_________________________________________________________________

コードの解説

  • モデルを完成させるには、畳み込みベースから出力された最後のテンソル(形状は(4, 4, 64))を、1つ以上のDense層に入力して分類処理を行います。
  • Dense層は入力としてベクトル(1次元データ)を受け取りますが、現時点での出力は3次元テンソルとなっています。
  • そこで、3次元の出力をFlatten層によって1次元に平坦化し、その上に1つ以上のDense層を追加します。
  • CIFARデータセットには10個の出力クラスが存在するため、最終層として10個の出力ユニットを持つDense層を配置します。
  • つまり、(4, 4, 64)の形状を持つ出力は、2つのDense層を通過する前に、形状(1024)のベクトルへと平坦化されることになります。
  1. PythonとTensorFlowを使って2つの行列を加算する方法

    TensorFlowは、Googleが提供する機械学習フレームワークです。オープンソースとして公開されており、Pythonと組み合わせてアルゴリズムやディープラーニングアプリケーションなどを実装するために広く利用されています。研究用途から本番環境まで幅広い場面で活用されており、複雑な数値計算を高速に実行するための最適化技術が多数搭載されています。この高い処理性能は、NumPyおよび多次元配列の仕組みによって支えられています。これらの多次元配列は「テンソル(tensor)」と呼ばれます。TensorFlowは深層ニューラルネットワークの構築を強力にサポートしており、高い拡張性を持つほか、代表的な

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

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