2017-06-30 792 views
3

私はMachine Learningの初心者です.TensorFlowバックエンドのKerasを使用してCNNモデルをトレーニングしています。Kerasのmodel.fit()とmodel.evaluate()の違いは何ですか?

誰かがmodel.fit()model.evaluate()の違いを説明してください。どちらが理想的ですか? (私は現在、model.fit()を使用しています)。

私はmodel.fit()model.predict()の効用を知っています。しかし、私はmodel.evaluate()の効用を理解することができません。 Kerasのドキュメントでは、

と評価されています。

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

ありがとうございます。 :)

答えて

5

fit()は入力用のモデルです。

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

evaluate()は既に訓練されたモデルを評価するためのものです。モデルの損失値&メトリクス値を返します。

私たちは、単純な回帰の例を考えてみましょう:

# 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)) 

enter image description here

は今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] 
+0

でもmodel.fit()の損失とACCを返します。右?私はmodel.fit()とmodel.evaluate()と少し曖昧です。 –

+0

fit()はモデルを訓練するためのものです。 evaluate()は、テストセット上の訓練されたモデルをテストするためのものです。 –

関連する問題