是否可以在数据集上训练CNN并在具有不同类的另一个数据集上对其进行测试?

时间:2019-01-23 11:17:32

标签: tensorflow keras deep-learning dataset conv-neural-network

我是深度学习的新手,并且正在使用CNN进行研究。我需要在图像数据集(地标图像)上训练CNN模型,并使用不同的数据集(地标图像)测试同一模型。动机之一是看到模型的概括能力。但是问题是:由于用于训练和测试的数据集不相同,因此类别也不相同!可能也有类的数量,这意味着在测试数据集上进行的预测是不值得信赖的(因为输出层的权重是根据属于训练数据集的不同类来计算的)。有什么方法可以在不影响测试准确性的情况下在不同的数据集上评估模型?

2 个答案:

答案 0 :(得分:0)

我认为您正面临分类问题。

您明确表示什么?您的火车数据集中是否有A B和C类,而测试数据集中的同一个类具有不同的标签,或者相对于火车数据集,您的测试数据集中有完全不同的类吗?

您可以通过创建从trainlabel到testlabel或反之亦然的映射来解决第一个问题。 第二个取决于您要实现的目标...如果您希望模型预测从未接受过培训的课程,那么您将不会获得任何结果。

答案 1 :(得分:0)

在一个数据集上神经网络的性能通常与在另一个数据集上的性能不同。一个数据集中的图像可能比另一个数据集中的图像更难区分。根据经验:如果您的地标数据集相似,则性能可能会相似。但是,情况并非总是如此:数据集之间的细微差异可能会导致性能显着不同。

您可以通过训练另一个数据集上的另一个网络来解释两个数据集上可能存在的不同性能。这将为您提供一个基线,该基线是您尝试将网络推广到网络时所期望的结果。

您可以将针对一组课程训练的神经网络应用于另一组课程。有两种主要方法:

  • Transfer learning。在这里,您训练过的网络的最后一层将被新的一层替换,该层将被单独训练以对新图像进行分类。 (用于许多课程。可以用于少量课程。)
  • All-Transfer learning。而不是替换最后一层,而是在其后添加一个新层,并且仅训练最后一层。 (仅用于几节课。)

这两种方法比从头训练神经网络要快得多。