hhxxttxs001 2023-03-05 10:29 采纳率: 0%
浏览 26
已结题

keras中自定义了MRR,结果训练集和预测集中出现 - MRR: 0.0000e+00 -- val_MRR: 0.0000e+00

keras中自定义了MRR,结果训练集和预测集中出现 - MRR: 0.0000e+00 -- val_MRR: 0.0000e+00

    def MRR(y_true, y_pred):
        c = tf.argsort(y_pred, direction='DESCENDING')
        c = tf.cast(c, dtype=tf.float32)
        d = tf.cast(tf.argmax(y_true, -1), dtype=tf.float32)
        e = len(c)
        h = 0
        for i in range(e):
            for j in range(5):
                if d[i] == c[i][j]:
                    h += 1 / (j + 1)
        return h / e

    ''''''

    model.compile(                                                                     
        loss='categorical_crossentropy',
        #loss='binary_crossentropy',
        optimizer=keras.optimizers.Adam(config.learning_rate),
        metrics=['top_k_categorical_accuracy',MRR]
      
    )

  • 写回答

1条回答 默认 最新

  • CodeBytes 2023-03-05 10:39
    关注

    该回答引用ChatGPT

    出现 MRR 值为 0.0 的原因可能有以下几个:

    损失函数问题:MRR 函数是一个自定义指标而不是损失函数。重要的是要确保用于训练的损失函数适合当前任务。如果损失函数不能优化模型参数以改善 MRR,则 MRR 值可能会保持为 0.0。

    数据问题:如果用于训练和验证的数据不适合,则可能导致 MRR 值不断改善。例如,如果数据存在偏差或不代表实际问题,则 MRR 值可能无法改善。

    模型架构问题:如果模型架构不适合当前任务,则可能无法学习数据中必要的模式以改善 MRR 值。确保模型架构适合当前任务非常重要。

    要调试问题,可以尝试以下方法:

    检查损失函数:确保损失函数适合当前任务。尝试使用不同的损失函数,以查看是否可以改善 MRR 值。

    检查数据:确保用于训练和验证的数据适合当前任务。检查数据是否存在偏差或不代表实际问题。

    检查模型架构:确保模型架构适合当前任务。尝试使用不同的模型架构,以查看是否可以改善 MRR 值。

    检查数据预处理:确保数据预处理适合当前任务。确保在将数据馈送到模型之前对数据进行了适当的预处理。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月6日
  • 创建了问题 3月5日

悬赏问题

  • ¥15 平板录音机录音问题解决
  • ¥15 请问维特智能的安卓APP在手机上存储传感器数据后,如何找到它的存储路径?
  • ¥15 (SQL语句|查询结果翻了4倍)
  • ¥15 Odoo17操作下面代码的模块时出现没有'读取'来访问
  • ¥50 .net core 并发调用接口问题
  • ¥15 网上各种方法试过了,pip还是无法使用
  • ¥15 用verilog实现tanh函数和softplus函数
  • ¥15 Hadoop集群部署启动Hadoop时碰到问题
  • ¥15 求京东批量付款能替代天诚
  • ¥15 slaris 系统断电后,重新开机后一直自动重启