我想在数据集的不同类别上训练一些模型,以便每个模型在输出层中只有相关数量的节点。稍后,我想通过制作一个公共向量来结合他们的学习,例如,他们的输出的聚合。最终/聚合模型将从这个聚合输出向量中学习。
例如,对于 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_classes
为 7
而不是 4
。但是,根据要求,我必须遵循相同的设置,即模型的输出层中应该只有相关数量的节点。
任何建议将不胜感激。
答案 0 :(得分:0)
最后。我得到了解决方案。谢谢。