【问题标题】:How to pass feature extracted from cnn dense layer to another cnn?如何将从cnn密集层提取的特征传递给另一个cnn?
【发布时间】:2020-12-22 11:42:52
【问题描述】:

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

600 = 总图像

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

现在我将它传递给 svm,准确率非常低,只有 20%。

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

【问题讨论】:

  • 您不能将形状为 (None, 1024) 的数据传递给 CNN。
  • 所以没有办法将形状 [600,1] 更改为 [600,24,24,1] 之类的东西?
  • 这根本没有意义
  • 哦,好吧。那么如何将 cnn1 功能传递给另一个 cnn2 进行训练?

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


【解决方案1】:

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

【讨论】:

  • 非常感谢。我从 1024 到 1 的原因是因为 scree-plot (elbow-method) 在 dim=1 上显示出最好的结果
猜你喜欢
  • 2018-08-20
  • 2021-10-23
  • 2016-08-27
  • 2017-09-26
  • 2021-04-01
  • 2020-01-24
  • 1970-01-01
  • 2016-12-21
  • 2021-03-31
相关资源
最近更新 更多