如何将从cnn密集层提取的特征传递给另一个cnn?

时间:2020-12-22 11:42:52

标签: python keras conv-neural-network svm pca

我实现了一个用于多标签图像分类的 cnn-1。然后我从密集层中提取特征并得到一个形状。 [600,1024]

600 = 总图片

我对此使用了 PCA 并得到了形状 [600,1]。

现在我将它传递给 svm 并且准确率非常低 20%。

我想将此传递给 cnn 并检查准确性。请帮助我。

1 个答案:

答案 0 :(得分:1)

您可能需要重新考虑很多事情。首先,PCA 应该想出一个单一的数字,它必须承担代表 1024 个数字的负担。这在天文上很困难,您可能不得不重新考虑将数据投影到如此低的维度。 CNN 永远不会使用单个数字作为输入。要回答您的评论,将 cnn1 特征传递给 cnn2,您不会展平您的向量(这意味着您不会有形状 (600, 1024) 的输出,而不是像 (600,3,32,32) 这样的数字,其中 3 代表输入过滤器(即带有颜色的图片中的 RGB,而这些 32 代表在 2D 情况下——因为你提到了图像分类,我假设 2D 卷积——图像大小)。卷积层允许你定义输出过滤器。这是我们的第二个数字例如。卷积后的图像大小取决于其他参数,例如内核大小和步幅,现在不要担心。重点是,如果您希望图像在第一个卷积层之后经过第二个卷积层,您需要确保您的第二个 conv 层接受第一个 conv 层的输出过滤器作为输入过滤器。根据我提供的数据,我只能告诉您。再一次,使用 PCA 从 1024 维到 1 维不是推荐,至少不是我推荐的。