因此,为了了解什么
metrics是开始,最好先了解一个
loss函数是什么。神经网络通常通过递减
loss函数的迭代过程使用梯度方法进行训练。
A
loss被设计为具有两个关键属性-
首先,其值越小,模型对数据的拟合越好;其次,它应该是可区分的。因此,知道了这一点,我们就可以完全定义a
metric是什么:它是一个函数,给定示例中的预测值和地面真实值,可以为您提供的模型“适合性”的标量度量。因此,如您所见,
loss函数是度量标准,但并非总是成立。要了解这些差异,让我们看一下最常见的
metrics用法示例:
使用不可微分的函数来衡量网络的性能: 例如,精度是不可微分的(甚至不是连续的),因此您无法直接针对它优化网络。但是,您可以使用它来选择精度最高的模型。
当最终损失是其中一些的组合时,获得不同损失函数的值: 假设您的损失具有一个正则化项,该项可衡量您的权重与的差异
0
,以及一项可衡量模型适用性的项。在这种情况下,您可以使用metrics
来单独跟踪模型的适应度在各个时期之间的变化。跟踪不希望直接优化模型的度量: 因此-假设您正在解决一个多维回归问题
mse
,而该问题是您最关心的,但与此同时,您cosine-distance
对自己的解决方案是随着时间变化的。然后,最好使用metrics
。
我希望上面介绍的解释清楚地表明了什么用于度量,以及为什么可以在一个模型中使用多个度量。现在,让我们谈谈它们在中的用法机制
keras。训练时有两种计算方法:
metrics
在编译时使用define:这是您直接要求的。在这种情况下,keras
为您定义的每个指标定义一个单独的张量,以便在训练时进行计算。这通常会使计算速度更快,但这要付出额外编译的代价,并且必须根据keras.backend
功能定义指标。使用
keras.callback
:很好,可以Callbacks
用来计算指标。由于每个回调的默认属性为model
,因此您可以model.predict
在训练时使用或模型化参数来计算各种指标。此外,它不仅可以以时间为单位进行计算,还可以以批处理或训练方式进行计算。这需要以较慢的计算速度和更复杂的逻辑为代价-因为您需要自己定义指标。
在这里,您可以找到可用指标的列表,以及有关如何定义自己的指标的示例。



