我使用带有TensorFlow后端的Keras来训练CNN模型。
model.fit()
和model.evaluate()
之间有什么区别?哪一个是理想的选择?(目前我正在使用model.fit()
)。
我知道model.fit()
和model.predict()
的用途,但是我无法理解model.evaluate()
的用处。Keras文档只是说:
它用于评估模型。
我觉得这是一个非常模糊的定义。
我使用带有TensorFlow后端的Keras来训练CNN模型。
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]
x
和 y
参数,evaluate()
返回什么?据我所知,它们的默认值是 None
,这意味着它们不是必需的。 - Chhaganlaalrecall
、accuracy
、auc
和precision
。这真的很方便。我们如何单独访问每个指标,以便我们可以使用它们?似乎它们不能通过点语法或下标访问。 - Edisonfit()
函数中使用,测试集会在evaluate()
函数中使用。在训练期间,您的神经网络将根据您的批量大小逐行读取训练数据。每次传送一个批次数据后,fit算法都会进行反向传播以调整神经网络中的权重。evaluate()
函数,将新数据(即测试集)发送到您的神经网络中,以查看它在处理未见过的数据时表现如何。这不会进行任何训练,纯粹是一项测试。如果一切顺利,那么训练得分与测试得分应该相似。fit(): 用给定的epoch数训练模型(这是针对训练时间,使用训练数据集)。
predict(): 为输入样本生成输出预测结果(这是在训练和测试之间进行的)。
evaluate(): 在测试模式下返回模型的损失值和指标值(这是使用测试数据集进行测试时间的)。
这里没有提到的一件事,我认为需要指明。model.evaluate()返回一个列表,其中包含损失和准确率。在上面的答案中没有提到的是,“损失”数字是计算x_test数组中每个项目的所有损失的总和。x_test应该包含你的测试数据,y_test应该包含你的标签。很明显,损失数字是所有损失的总和,而不仅仅是x_test数组中一个项目的一个损失。
evaluate()
的理由吗?因为在 fit()
中已经可以传递验证数据集。而在 predict()
中,我们会使用测试数据集。 - Murilomodel.evaluate()
返回测试损失(越低越好)和“指标”。print(model.metric_names)
。
compile
(配置模型进行训练);fit
(为固定数量的epochs训练模型);evaluate
(返回测试模式下模型的损失值和指标值);predict
(为输入样本生成输出预测)。https://www.tensorflow.org/api_docs/python/tf/keras/Model - michael