【问题标题】:is the .classes method of a imagedatagenorator sorted?imagedatagenerator 的 .classes 方法是否已排序?
【发布时间】:2022-11-12 17:24:42
【问题描述】:

任何人都知道我这样做是否正确,基本上我正在尝试创建一个 CM,我有我的 y_pred,显然我需要我的基本事实,或者我正在尝试使用 testdata.classes(这是他们在网上做的,testdata是 imagedatagenerator 的一个实例)但是 .classes 似乎只返回我所有类的排序列表,而不是与我的预测相符的类列表。因此,我认为我得到了一个非常不准确的 CM。知道如何获得预测的基本事实吗?

这是我在 .classes 中的意思的一个例子,这个列表按 0-15 的顺序排列。顺便说一句,我的模型准确率为 95%,所以我希望这些模型能更好地排列

我希望 y_pred 和 dataset.classes 95% 的时间都相同

【问题讨论】:

    标签: python tensorflow machine-learning conv-neural-network imagedatagenerator


    【解决方案1】:

    这是一个常见的问题。

    generator.classes 不应用作基本事实标签,因为它们的排序方式与您获得预测的方式不同。因此,您计算的任何指标都是错误的。

    一个通用且正确的方法是迭代生成器,假设它是Sequence 的子类:

    all_y_pred = []
    all_y_true = []
    
    for i in range(len(generator)):
        x, y = generator[i]
        y_pred = model.predict(x)
        
        all_y_pred.append(y_pred)
        all_y_true.append(y)
    
    all_y_pred = np.concatenate(all_y_pred, axis=0)
    all_y_true = np.concatenate(all_y_true, axis=0)
    
    metric = compute_your_metric(all_y_true, all_y_pred)
    

    如您所见,您需要迭代生成器,按批次计算预测,并且在每个批次上您还可以访问真实标签,因此您可以在某些列表上累积这两个标签,然后将它们组合起来计算您想要的指标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      • 2022-06-11
      • 2021-10-16
      • 2018-12-08
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多