我应该使用哪个卷积?Conv2d 或 Conv1d

数据挖掘 Python 喀拉斯 张量流
2021-10-10 14:04:00

我的数据集包含人脸的 dlib 地标点。我正在使用 keras 来训练模型。

数据集形状为(length_of_dataset,68,2)我知道我有两个选择。

  • 第一个是使用conv1dwith input_shape = (68,2)
  • 第二个是使用conv2dwith input_shape = (1,68,2)

我的问题是哪个更好?为什么?

2个回答

使用 Conv2D 时,input_shape 不必为 (1,68,2)。样本的数量与卷积无关,无论如何每次都会给层一个样本。

变化的是卷积输入的空间维度数:

  • 对于 Conv1D,只使用一个维度,因此卷积在第一个轴(大小68)上运行。
  • 使用 Conv2D,使用二维,因此卷积在定义数据的两个轴上运行(大小(68,2)

因此,您必须仔细选择过滤器尺寸。例如,如果您选择过滤器大小 (4,2) 的 Conv2D,它将产生与大小 (4) 的 Conv1D 相同的结果,因为它将完全在数据的第二个轴上运行。

最后,没有回应什么是最好的方法。一般来说,Conv2D 在图像上效果很好,而 Conv1D 在文本上效果很好。考虑到第二维数据的大小,Conv2D 似乎没有多大意义,因此 Conv1D 应该可以正常工作。

总之,在一维 CNN 中,内核向 1 个方向移动。1D CNN 的输入和输出数据是二维的。主要用于时间序列数据。

在 2D CNN 中,内核向 2 个方向移动。2D CNN 的输入和输出数据是 3 维的。主要用于图像数据。

在 3D CNN 中,内核沿 3 个方向移动。3D CNN 的输入和输出数据是 4 维的。主要用于 3D 图像数据(MRI、CT 扫描)。

您可以在此处找到更多详细信息。