1. ホーム
  2. tensorflow

[解決済み] Kerasのmodel.fit()とmodel.evaluate()の違いは何ですか?

2022-03-09 22:28:37

質問

CNNモデルを学習するために、KerasとTensorFlowバックエンドを使用しています。

の間はどうなっているのでしょうか? model.fit()model.evaluate() ? どちらを使うのが理想的でしょうか?(私は model.fit() を使用しています。)

の有用性は知っている。 model.fit()model.predict() . しかし、私はその有用性を理解することができません。 model.evaluate() . Kerasのドキュメントにはこう書かれているだけです。

モデルを評価するために使用されます。

これは非常に曖昧な定義だと感じています。

どのように解決するのか?

fit() は与えられた入力(とそれに対応する学習ラベル)を使ってモデルを学習させるためのものです。

evaluate() は,検証(またはテスト)データと対応するラベルを用いて,すでに学習されたモデルを評価するためのものです.モデルの損失値とメトリクスの値を返します。

predict() は実際の予測用です。入力サンプルに対する出力予測を生成します。

簡単な回帰の例で考えてみましょう。

# input and output
x = np.random.uniform(0.0, 1.0, (200))
y = 0.3 + 0.6*x + np.random.normal(0.0, 0.05, len(y))

では、kerasで回帰モデルを適用してみましょう。

# A simple regression model
model = Sequential()
model.add(Dense(1, input_shape=(1,)))
model.compile(loss='mse', optimizer='rmsprop')

# The fit() method - trains the model
model.fit(x, y, nb_epoch=1000, batch_size=100)

Epoch 1000/1000
200/200 [==============================] - 0s - loss: 0.0023

# The evaluate() method - gets the loss statistics
model.evaluate(x, y, batch_size=200)     
# returns: loss: 0.0022612824104726315

# The predict() method - predict the outputs for the given inputs
model.predict(np.expand_dims(x[:3],1)) 
# returns: [ 0.65680361],[ 0.70067143],[ 0.70482892]