我目前正在研究一个模型,我必须预测一些 Material ,如梯子、螺母、 bolt 、鼠标、瓶子等。我已经为此编写了一个算法,到目前为止该算法运行良好,这组图像我的本地计算机上有可用的数据,并且我也有足够的培训数据来进行培训和测试。截至目前,我总共有 26 个图像类可供预测,全部都是 Material 类型。
现在,这很好,但我想要一种情况,如果图像不属于所述图像类,我希望它返回类似这样的内容,其中它会指定这不是 Material ,而是不同的图片共。
为此,我正在考虑使用一组不同的图像(例如 Imagenet)来双重训练我的模型,只要查看任何非物质图像,它就会返回类似“这不是物质!”的信息
所以基本上,同一个模型将在两个不同的数据集上进行训练,一个数据集是我的 Material 数据集,另一个数据集是除 Material 之外的任何数据集,例如 Imagenet 中的图像。
我的问题是如何解决这个问题?或者我什至需要这样做吗?或者我只是写一个简单的 if - else 并将任何它不识别为 Material 的东西放入非 Material 类型?
最佳答案
您可以合并两个数据集,并将不属于上述 26 个类别的数据集标记为特殊的第 27 个类别。每当您的模型预测该类时,您就知道它不是数据集的一部分。例如:
pred = [0.1, 0.1, 0.8] # Assume label 2 is not-this-dataset label
然后您可以使用其他数据集中带有标签 2 的图像,并在训练周期中照常进行训练。确保平衡数据集,因为没有按比例出现太多特殊的非此数据集标签,因此您的模型不会过度拟合,并且只是预测所有内容都不是来自原始数据集。
关于machine-learning - 如何同时训练有两组不同数据集的单个模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55899513/