我们可以只在数据集的某些类上训练模型吗

时间:2021-07-16 15:00:55

标签: python keras one-hot-encoding

我想在数据集的不同类别上训练一些模型,以便每个模型在输出层中只有相关数量的节点。稍后,我想通过制作一个公共向量来结合他们的学习,例如,他们的输出的聚合。最终/聚合模型将从这个聚合输出向量中学习。

例如,对于 Cifar 10 数据集,我有两个模型;模型 1 和模型 2。 模型 1 仅具有类 1,3,5,7 的样本,模型 2 具有例如 0,3,5,8,9 的样本。很明显,model1 只有 4 个类的样本,因此它在输出层中应该只有 4 个节点。同理,Model-2 有 5 个类的样本,所以它在输出层应该有 5 个节点。

根据我的理解;

cifar 10 数据集中的实际类数:[0,1,2,3,4,5,6,7,8,9]

模型 1 的类:[1,3,5,7]

模型 2 的类:[0,3,5,8,9]

我只是制作了两个具有相关节点数量的模型。但是,当我尝试使用 keras.utils.np_utils.to_categorical(y,num_classes=4) 为 Model-1 应用一种热编码时,它不允许我这样做,并且出现以下错误:

InvalidArgumentError:  logits and labels must be broadcastable: logits_size=[32,4] labels_size=[32,7]

我进一步探索了互联网,发现这是由于标签和类大小的差异,即 Model-1 具有最大。类标签为 7 所以这意味着一种热编码期望 num_classes7 而不是 4。但是,根据要求,我必须遵循相同的设置,即模型的输出层中应该只有相关数量的节点。

任何建议将不胜感激。

1 个答案:

答案 0 :(得分:0)

最后。我得到了解决方案。谢谢。