model.add()によるレイヤー追加

Kerasのmodel.add()メソッドは、Sequentialモデルを用いてニューラルネットワークを構築する際に、レイヤー(層)を順番に積み重ねるために使用されます。model.add()は、レイヤーを直列に並べるシンプルな方法を提供し、特に入力から出力までの流れが一方向であるモデルに適しています。


基本構文

python
from keras.models import Sequential from keras.layers import Dense model = Sequential() model.add(Dense(units=64, activation='relu', input_shape=(100,))) model.add(Dense(units=10, activation='softmax'))

各構成要素の解説

1. Sequential()の役割

  • 空のモデルを初期化し、レイヤーを順次積み重ねることができる構造を提供します。

2. model.add()の役割

  • 引数として渡されたレイヤー(例:DenseConv2Dなど)を、モデルに追加します。

  • レイヤーは順番が重要で、上から順にデータが流れる構造になります。

3. 最初のレイヤーとinput_shape

  • 最初のレイヤーを追加する際には、入力データの形状(input_shape)を明示する必要があります。

  • input_shape=(100,)は、入力が100次元のベクトルであることを示します。

4. 例:複数レイヤーの追加

python
from keras.layers import Dropout model = Sequential() model.add(Dense(128, activation='relu', input_shape=(784,))) model.add(Dropout(0.2)) model.add(Dense(64, activation='relu')) model.add(Dense(10, activation='softmax'))

この例では、以下のようにモデルが構築されます:

  • 784次元の入力を128ユニットの全結合層(ReLU活性化)に変換

  • ドロップアウトで20%のユニットを無効化(過学習防止)

  • 次に64ユニットの全結合層(ReLU活性化)

  • 最後に10クラス分類用の出力層(Softmax活性化)


注意点

  • model.add()Sequentialモデルでのみ有効です。複雑な分岐構造や複数入力・出力を持つモデルには、Functional APIを使う必要があります。

  • 入力形状の指定は最初のレイヤーのみに必要で、それ以降のレイヤーでは自動的に形状が推論されます。


まとめ

  • model.add()は、KerasのSequentialモデルにおいてレイヤーを順番に追加するための基本的なメソッドです。

  • 入力から出力まで直列構造のモデル設計に最適です。

  • 各レイヤーは、Dense、Dropout、Conv2Dなど、Kerasが提供するレイヤークラスで構成されます。

  • より複雑な構造が必要な場合は、Functional APIを検討します。

生成日:2025/05/22