Keras中的“指标”是什么?
deep-learning
keras
machine-learning
neural-network
4
0

对我而言,尚不清楚什么是metrics (如以下代码所示)。他们到底在评估什么?为什么我们需要在model定义它们?为什么我们在一个模型中可以有多个指标?更重要的是,所有这些背后的机制是什么?任何科学参考也将受到赞赏。

model.compile(loss='mean_squared_error',
              optimizer='sgd',
              metrics=['mae', 'acc'])
参考资料:
Stack Overflow
收藏
评论
共 3 个回答
高赞 时间 活跃

如在keras指标页面中所述:

指标是用于判断模型性能的函数

指标经常与提早停止回调一起使用以终止训练并避免过度拟合

收藏
评论

参考: Keras指标文档

正如keras metrics的文档页面中所给出的那样, metric判断模型的性能。 compile方法中的metrics参数包含模型在训练和测试阶段需要评估的度量标准列表。指标如:

  • binary_accuracy

  • categorical_accuracy

  • sparse_categorical_accuracy

  • top_k_categorical_accuracy

  • sparse_top_k_categorical_accuracy

是编译模型时, metrics参数中提供的可用度量标准函数。

度量函数也可以自定义。当需要评估多个指标时,它以dictionarylist的形式传递。

您可以在此处找到深入了解指标应参考的一项重要资源

收藏
评论

因此,为了了解什么是metrics ,最好先了解loss函数是什么。通过减少loss函数的迭代过程,大多数使用梯度方法来训练神经网络。 loss被设计为具有两个关键属性- loss值越小,模型对数据的拟合越好,还有另一个原因是loss应该是可区分的。因此,知道了这一点,我们就可以完全定义metric是什么:该函数可以根据示例提供给定的预测值和基本事实值,为您提供模型对您数据的“适合性”的标量度量。因此,如您所见, loss函数是一个度量标准,但并非总是成立。要了解这些差异,让我们看一下最常用的metrics用法示例:

  1. 使用不可微分的函数来衡量网络的性能:例如,精度是不可微分的(甚至不是连续的),因此您无法直接针对它优化网络。但是,您可以使用它来选择精度最高的模型。

  2. 当最终损失是其中一些的组合时,获得不同损失函数的值:假设您的损失具有一个正则化项,用于衡量您的权重与0 的差值 ,以及一项用于衡量模型适用性的项。在这种情况下,您可以使用metrics来单独跟踪模型的适应度在各个时期之间的变化。

  3. 跟踪您不希望直接优化模型的度量:因此-假设您正在解决多维回归问题,而您最关心的是mse ,但同时您对cosine-distance也很感兴趣cosine-distance解决方案被改变的时间。然后,最好是使用metrics

我希望上面给出的解释清楚地表明了什么用于度量,以及为什么可以在一个模型中使用多个度量。现在,让我们谈谈keras使用它们的机理。训练时有两种计算方法:

  1. 使用在编译时定义的metrics :这是您直接要求的。在这种情况下, keras为您定义的每个度量定义一个单独的张量,以便在训练时进行计算。这通常会使计算速度更快,但这要付出额外的编译费用,并且必须根据keras.backend函数来定义指标。

  2. 使用keras.callback :很高兴您可以使用Callbacks来计算指标。由于每个回调都具有默认的model属性,因此您可以在训练时使用model.predict或model参数来计算各种指标。此外,它不仅可以以时间为单位进行计算,还可以以批处理或训练方式进行计算。这需要以较慢的计算速度和更复杂的逻辑为代价-因为您需要自己定义指标。

在这里,您可以找到可用指标的列表,以及有关如何定义自己的指标的示例。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号