我想知道如何定义或表示一个负训练集,如果我想从预训练模型(例如在ILSVRC12或ImageNet数据集上的AlexNet)训练一个二分类器。我目前的想法是选择一个不相关的类作为负训练集,而相关的类作为正训练集。是否有更优雅的方法?
回答:
在ILSVRC数据集上训练的卷积神经网络已经能够区分1000个图像类别。是的,你可以使用这些拓扑结构来训练一个二分类器,但我建议你从一个未训练的模型开始,并让它通过你选择的两个类。如果你从一个已训练的模型开始,你需要“忘记”很多东西,而且你的结果仍然试图在1000个类别中区分:最后的全连接层会给你带来麻烦。
有办法绕过1000个类别的问题。如果你的应用已经与一个或多个已训练的类别重叠,那么只需添加一个层,将这些类别映射到标签“1”,将所有其他类别映射到标签“0”。
如果你坚持保留已训练的核,那么尝试用一个2类全连接层替换最后的全连接层(1000)。然后选择你的两个类(适用的图像与其他所有图像)并进行训练。