无论我放什么图像,我的 CNN 模型都只预测第一类

我是机器学习的初学者,并在其中一门 ML 课程中遵循模板来训练猫和狗的图像以对它们进行分类。

如果我在我的模型中加载要预测的图像,无论如何,预测都会成为我最后在列表板类型中定义的第一个类。

我这样做是为了对其他类型的图像进行分类,但是我在该数据集上遇到了同样的错误,所以我想到了使用经典的猫和狗数据集。

我想预测我给训练模型的文本图像是否有花哨的文本或标准的文本字体。

这是我的代码。


拉丁的传说
浏览 285回答 2
2回答

智慧大石

您的预测器是否总是返回 0 作为类?我问的原因是我遇到了同样的问题,问题"platetype[np.argmax(yhat)]"在于您使用二进制类模式分类的事实。argmax 将返回结果的索引位置,但由于您使用的是二进制类,并且在您的最后一层中有 1 个密集。它只会返回一个值,所以它总是会返回第一个类(0 作为索引位置)。由于网络只设置,返回一个类。有两种解决方案,这取决于您喜欢哪种解决方案:是将训练和测试生成器的 class_mode 更改为“分类”,将最终密集层从 1 更改为 2,以便这将返回两个类的分数/概率。所以当你使用 argmax 时,它会返回最高分的索引位置,表明它预测的是哪个类。另一种方法是坚持你所拥有的,但你必须改变确定课程的方式。您将使用分数,因此 yhat 将是一个列表。您需要访问分数并根据该分数确定模型预测的类别。也许有人可以澄清这一点,因为我没有使用过这种方法,我不确定。希望这可以帮助!。我和你有同样的问题,这为我解决了(我选择了选项 1)。让我知道它是否对你有用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python