什么是Keras的"指标"?

Dra*_*ght 20 python machine-learning neural-network deep-learning keras

目前还不清楚是什么metrics(如下面的代码所示).他们究竟在评估什么?为什么我们需要在model?中定义它们?为什么我们可以在一个模型中拥有多个指标?更重要的是,这背后的机制是什么?任何科学参考也值得赞赏.

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

Mar*_*jko 32

因此,为了理解metrics它是什么,从理解loss函数是什么开始是好的.神经网络通常通过递减loss函数的迭代过程使用梯度方法训练.一个loss它的设计有两个重要的特性-即少它的价值是-更好的模型适合您的数据,它应该是可微.所以 - 知道这一点我们可以完全定义metric它是什么:它是一个函数,给出预测值和示例的基本事实值,为您提供模型适合您所拥有数据的标量度量.因此,您可能会看到loss函数是度量标准但相反并不总是成立.要了解这些差异,我们来看看最常见的metrics用法示例:

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

  2. 当你的最终损失是其中几个的组合时,获得不同损失函数的值:让我们假设你的损失有一个正则化项,用于衡量你的权重的差异,0以及衡量模型适应性的术语.在这种情况下,您可以使用metrics以便单独跟踪模型的适应度如何随时间变化.

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

我希望上面给出的解释明确了什么是指标以及为什么你可以在一个模型中使用多个指标.所以现在 - 让我们说几句关于它们的使用机制keras.在培训时有两种计算方法:

  1. 使用metrics定义的编译:这是你直接问的.在这种情况下,keras为您定义的每个度量定义一个单独的张量,以便在训练时计算它.这通常会使计算更快,但这需要额外编译的成本以及应根据keras.backend函数定义度量的事实.

  2. 使用keras.callback:您可以使用哪些内容Callbacks来计算指标.由于每个回调都具有默认属性,因此model您可以model.predict在训练时使用或模型参数计算各种指标.此外 - 它不仅可以按时间计算,还可以按批次计算或按训练计算.这是以较慢的计算和更复杂的逻辑为代价的 - 因为您需要自己定义指标.

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


Ioa*_*ios 7

正如在keras 指标页面中描述的那样:

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

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