在Keras中构建模型时的损失函数、度量标准和评分方法

在构建keras模型时,loss(损失函数)、metrics(度量标准)和scoring(评分方法)之间有什么区别?它们应该相同还是不同?在一个典型的模型中,我们在GridSearchCV中使用这三者。

这里展示了一个典型的回归模型的快照,该模型使用了这三者。

def create_model(): model = Sequential() model.add(Dense(12, input_dim=1587, activation='relu')) model.add(Dense(1, activation='sigmoid')) model.compile(loss='mean_squared_error', optimizer='adam', metrics=['mean_squared_error']) return modelmodel = KerasRegressor(build_fn=create_model, verbose=0)batch_size = [10, 20, 40, 60, 80, 100]epochs = [10, 50, 100]param_grid = dict(batch_size=batch_size, epochs=epochs)grid = GridSearchCV(estimator=model,param_grid=param_grid, scoring='r2' n_jobs=-1)grid_result = grid.fit(X, Y)

回答:

不,它们是不同的,在代码中用于不同的目的。

你的代码中有两个部分。

1) Keras部分:

 model.compile(loss='mean_squared_error',                optimizer='adam',                metrics=['mean_squared_error'])

a) loss:在文档的编译部分这里,你可以看到:

损失函数是模型尝试最小化的目标。

因此,它实际上是与optimizer(优化器)一起用于训练模型的。

b) metrics:根据文档

度量函数类似于损失函数,但评估度量的结果不会用于训练模型。

这仅用于报告度量结果,以便用户(你)可以判断模型的表现。它不会影响模型的训练方式。

2) 网格搜索部分:

scoring:同样,查看文档

一个单一的字符串或一个可调用的对象,用于评估测试集上的预测结果。

这用于查找你定义在param_grid中的参数组合,以获得最佳score(得分)。

它们可以(在大多数情况下)是不同的,这取决于你的需求。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注