Pythonでmodel.fitするときの引数の意味がわからない?Sequential()で作ったモデルについて解説

スポンサーリンク

シーケンシャルモデルの作成

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エポックで学習を行っています。

タイトルとURLをコピーしました