【问题标题】:Angular distance in Keras as metricKeras中的角距离作为度量
【发布时间】:2019-06-13 19:17:37
【问题描述】:

我正在使用 Keras 来训练我的模型,并希望使用我的预测和假设之间的角距离作为我的指标。到目前为止,我发现的最接近的度量是余弦接近度,而不是角距离。

余弦接近度(或余弦距离)的问题是小数的余弦非常相似。

查看Wikipedia,可以使用余弦接近度计算角距离:

所以我想知道使用基于余弦接近度的自定义指标是否是一个好主意,如果是,那么它是如何实现的。

【问题讨论】:

    标签: keras deep-learning metrics


    【解决方案1】:

    所以我想我有自己问题的答案。我所做的是我首先通过简单地使用 Keras 的源代码来计算余弦接近度。然后我计算了之前结果的反余弦:

    def angular_distance(y_true, y_pred):
         y_true = K.l2_normalize(y_true, axis=-1)
         y_pred = K.l2_normalize(y_pred, axis=-1)
         cosine = K.sum(y_true * y_pred, axis=-1)
         return 2*tf.math.acos(cosine)/np.pi
    

    然后我将新函数作为自定义指标传递给模型的编译脚本:

    model.compile(loss='categorical_crossentropy', optimizer=Adam(0.001),
                metrics=[angular_distance])
    

    【讨论】:

      猜你喜欢
      • 2017-10-23
      • 2020-02-18
      • 2019-06-22
      • 1970-01-01
      • 2016-09-15
      • 1970-01-01
      • 2016-12-05
      • 2018-07-14
      • 2013-05-05
      相关资源
      最近更新 更多