シーケンシャルモデルの作成
PythonのKerasライブラリで提供されるSequential()関数は、シーケンシャルモデルを作成するためのものです。Sequentialモデルは、各レイヤーが次のレイヤーの入力として順番に処理される非常に単純なニューラルネットワークの形式を表します。
Sequentialモデルは、入力形状が固定されており、各レイヤーに正確に1つの入力テンソルがあることが前提となっています。
model.fitするときの引数の意味
fit()関数は、Sequentialモデルをトレーニングするために使用される主要な関数です。fit()関数は、以下のような引数を取ります。
- x: トレーニングデータの入力。ndarrayまたはTensorである必要があります。
- y: トレーニングデータの出力。ndarrayまたはTensorである必要があります。
- batch_size: 一度に処理するサンプル数。デフォルトは32です。
- epochs: トレーニングのエポック数。デフォルトは10です。
- verbose: トレーニングのログ表示方法。0、1、または2のいずれかの値をとります。
- validation_data: バリデーションデータのタプル(x_val、y_val)。バリデーションデータが与えられない場合はNoneに設定できます。
- shuffle: サンプルの順序をシャッフルするかどうかを指定します。デフォルトはTrueです。
- callbacks: トレーニング中に呼び出すコールバック関数のリスト。
これらの引数を設定することで、Sequentialモデルをトレーニングすることができます。
model.fitの例
KerasのSequentialモデルを使って単純な2層のニューラルネットワークを構築し、fit()メソッドを用いてモデルを学習する簡単な例です。
import numpy as np from keras.models import Sequential from keras.layers import Dense
from tensorflow.keras.utils import plot_model# 入力データ x_train = np.array([[0,0],[0,1],[1,0],[1,1]]) y_train = np.array([[0],[1],[1],[0]]) # モデルの構築 model = Sequential() model.add(Dense(4, input_dim=2, activation='relu')) model.add(Dense(1, activation='sigmoid')) # モデルのコンパイル model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy']) # モデルの学習 model.fit(x_train, y_train, epochs=1000, batch_size=1)
plot_model(model, to_file='model.png', show_shapes=True) #モデル図
この例では、入力データとして2つの特徴量を持つ4つのサンプルがあり、それぞれのラベルが0か1であるとします。モデルは、4つのユニットを持つ隠れ層と、1つの出力層を持ちます。また、ReLUとシグモイド関数をそれぞれ活性化関数として使っています。最後に、バイナリのクロスエントロピー損失とAdam最適化を用いて、モデルをコンパイルし、1000エポックで学習を行っています。