gpt4 book ai didi

tensorflow - 将 TensorFlow 损失全局目标 (recall_at_precision_loss) 与 Keras(非指标)一起使用

转载 作者:行者123 更新时间:2023-12-03 16:13:58 26 4
gpt4 key购买 nike

背景

我有一个带有 5 个标签的多标签分类问题(例如 [1 0 1 1 0] )。因此,我希望我的模型在固定召回、精确召回 AUC 或 ROC AUC 等指标上有所改进。

使用与我想要优化的性能测量没有直接关系的损失函数(例如 binary_crossentropy )没有意义。因此,我想使用 TensorFlow 的 global_objectives.recall_at_precision_loss()或类似于损失函数。

  • 相关 GitHub:
    https://github.com/tensorflow/models/tree/master/research/global_objectives
  • 相关论文(Scalable Learning of Non-Decomposable Objectives):https://arxiv.org/abs/1608.04802

  • 不是公制的

    我不是在寻找实现 tf.metrics .我已经在以下方面取得了成功: https://stackoverflow.com/a/50566908/3399066

    问题

    我认为我的问题可以分为两个问题:
  • 使用方法 global_objectives.recall_at_precision_loss()或类似?
  • 如何在带有 TF 后端的 Keras 模型中使用它?

  • 问题一

    有一个文件叫 loss_layers_example.pythe global objectives GitHub page (same as above) .但是,由于我对TF没有太多经验,所以我不太了解如何使用它。另外,谷歌搜索 TensorFlow recall_at_precision_loss exampleTensorFlow Global objectives example不会给我任何更清楚的例子。

    我如何使用 global_objectives.recall_at_precision_loss()在一个简单的 TF 示例中?

    问题二

    会像(在 Keras 中): model.compile(loss = ??.recall_at_precision_loss, ...)足够?
    我的感觉告诉我它比这更复杂,因为使用了 loss_layers_example.py 中使用的全局变量。 .

    如何使用类似 global_objectives.recall_at_precision_loss() 的损失函数在凯拉斯?

    最佳答案

    我设法通过以下方式使其工作:

  • 显式地将张量整形为 BATCH_SIZE 长度(参见下面的代码)
  • 将数据集大小减少到 BATCH_SIZE 的倍数
  •     def precision_recall_auc_loss(y_true, y_pred):
    y_true = keras.backend.reshape(y_true, (BATCH_SIZE, 1))
    y_pred = keras.backend.reshape(y_pred, (BATCH_SIZE, 1))
    util.get_num_labels = lambda labels : 1
    return loss_layers.precision_recall_auc_loss(y_true, y_pred)[0]

    关于tensorflow - 将 TensorFlow 损失全局目标 (recall_at_precision_loss) 与 Keras(非指标)一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54286334/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com