多通道训练图像

数据挖掘 机器学习 深度学习 喀拉斯 张量流 美国有线电视新闻网
2022-01-29 22:19:20

所以我有一组图像,每个图像有 16 层。
是否有充分的理由以
示例格式拆分通道:[images_length,16,image_width, image_height]
而不是创建更简单的
示例 2:[images_length,1,image_width * 16, image_height]

在第二个示例中,我使用单个通道并将每个通道并排放置,以创建一个长度是原始图像的 16 倍但高度相同的图像等。

所以这里是实际的问题:

  1. 使用第二种方法是否有任何负面权衡?
  2. 哪种方法更节省内存(在显卡方面)?

当我使用 tf 作为 keras 的后端时,我标记了 keras 和 tensorflow。

感谢您的时间!

1个回答

不知道你有什么样的图像,16通道?!哦,男孩:) 无论如何,如果它们是图像,第一个更好。原因是在第二种方法中,您以某种方式展开输入信号。通过这样做,您将删除有关位置的信息。您正在删除邻近输入的信息。卷积神经网络试图找到这些特征。例如,考虑MNIST数据集。您可以使用 CNN 和 MLP 进行学习,但使用前者是因为 CNN 关心在输入的不同部分以某种方式复制的模式。如果它们不是图像并且您知道相邻像素或输入是相关的,那么您应该再次利用 CNN。考虑到卷积层是用于提取适当特征的 CNN。分类任务是使用 CNN 中的密集层完成的。

关于效率,考虑两点。显卡称为 SIMD 计算机。它代表单指令多数据。正如显卡的名称所暗示的那样,矩阵运算是使用 GPU 非常有效地完成的。因此,与 CPU 相比,GPU 中的密集层非常快。另一点是关于并行编程。卷积层中的每个滤波器都是独立的;因此,可以使用瘫痪的指令来应用它们。同样,合适的 GPU 也非常擅长这一点。我知道我已经说了两件事,但实际上要记住三件事。忘记上面提到的所有要点!要考虑的最重要的事情是内存和总线。在某些情况下,您没有超过 6 Gig 内存的图形卡。在那些情况下,我真的更喜欢上一代的 CPU 而不是 GPU。原因是你必须处理内存的限制。

在您的情况下,请考虑如果您在输入之后使用密集层,那么参数的数量将是科幻小说,尽管您应该使用 CNN。