给定 logits(从 RNN/Lstm/Gru 以时间主要格式输出,即 (maxTime, batchSize, numberofClasses)),ctc 贪婪解码器如何进行解码以生成输出序列。
我在其网页https://www.tensorflow.org/api_docs/python/tf/nn/ctc_greedy_decoder上发现了“对输入(最佳路径)中给出的对数进行贪婪解码” 。
一种可能性是在每个时间步选择具有最大值的输出类,折叠重复并生成相应的输出序列。是 ctc 贪婪解码器在这里做的还是别的什么?使用示例进行解释将非常有用。
我试图了解在数据集不平衡的情况下,AUC 为何是比分类准确性更好的指标。
假设数据集包含 3 个类别的 1000 个示例,如下所示:
a = [[1.0, 0, 0]]*950 + [[0, 1.0, 0]]*30 + [[0, 0, 1.0]]*20
Run Code Online (Sandbox Code Playgroud)
显然,这个数据是不平衡的。
一个幼稚的策略是预测属于第一类的每个点。
假设我们有一个具有以下预测的分类器:
b = [[0.7, 0.1, 0.2]]*1000
Run Code Online (Sandbox Code Playgroud)
使用列表中的真实标签a和列表中的预测b,分类精度为 0.95。
因此,人们会认为该模型确实在分类任务上表现良好,但这并不是因为该模型正在预测一个类别中的每个点。
因此,建议使用 AUC 指标来评估不平衡的数据集。如果我们使用 TF Keras AUC
指标
预测 AUC ,我们会得到 ~0.96。
如果我们通过设置 来使用 sklearn f1-score指标来预测 f1-score ,我们会得到 0.95。 b=[[1,0,0]]*1000
现在我有点困惑,因为所有指标(准确度、AUC 和 f1-score)都显示出很高的价值,这意味着该模型非常擅长预测任务(但这里的情况并非如此)。
我在这里遗漏了哪一点以及我们应该如何解释这些价值观?
谢谢。
python scikit-learn auc multiclass-classification tensorflow2.0