tensorflow imagedatagenorator的.classes方法是否已排序?

mnemlml8  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(738)

如果我这样做是正确的,任何人都知道,基本上我试图创建一个CM,我有我的y_pred,显然我需要我的地面真理,或者我试图使用testdata。类(这是他们在网上所做,testdata是imagedatagenerator的一个示例)然而,classes似乎只是返回我所有类的排序列表,而不是会与我的预测一致的类列表。由于这一点,我认为我得到了一个非常不准确的CM.任何想法,我如何才能得到地面真理为我的预测?
这里是一个例子,我的意思是ab.classes,这个列表只是去顺序0-15。我的模型是95%准确顺便说一句,所以我希望这些排队好得多
我希望y_pred和dataset.classes与timex 1c 0d1x的95%相同

z9smfwbn

z9smfwbn1#

这是一个常见的问题。
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)

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

相关问题