2017-06-30 726 views
3

我是机器学习新手,我使用Keras和TensorFlow后端来培训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()用于测试测试集上的训练模型。 –

相关问题