Keras 中的损失、指标和得分

Abd*_*han 8 machine-learning scikit-learn keras grid-search tensorflow

在构建模型时loss,metrics和之间有什么区别?它们应该不同还是相同?在典型模型中,我们将所有三个用于。scoringkerasGridSearchCV

这是使用所有三个的典型回归模型的快照。

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 model

model = 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)
Run Code Online (Sandbox Code Playgroud)

Viv*_*mar 6

不,它们都是在您的代码中用于不同目的的不同东西。

您的代码中有两部分。

1)Keras部分:

 model.compile(loss='mean_squared_error', 
               optimizer='adam', 
               metrics=['mean_squared_error'])
Run Code Online (Sandbox Code Playgroud)

a) loss:在此处文档编译部分,您可以看到:

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

所以这实际上是与 一起使用optimizer来实际训练模型

b) metrics:根据文件

度量函数类似于损失函数,不同之处在于在训练模型时不使用评估度量的结果。

这仅用于报告指标,以便使用(您)可以判断模型的性能。它不会影响模型的训练方式。

2)网格搜索部分:

scoring: 再次检查文档

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

这用于查找您定义的参数组合,以param_grid提供最佳score.

它们很可能(在大多数情况下)不同,这取决于您想要什么。