我的数据集包含人脸的 dlib 地标点。我正在使用 keras 来训练模型。
数据集形状为(length_of_dataset,68,2)。我知道我有两个选择。
- 第一个是使用
conv1dwithinput_shape = (68,2)。 - 第二个是使用
conv2dwithinput_shape = (1,68,2)。
我的问题是哪个更好?为什么?
我的数据集包含人脸的 dlib 地标点。我正在使用 keras 来训练模型。
数据集形状为(length_of_dataset,68,2)。我知道我有两个选择。
conv1dwith input_shape = (68,2)。conv2dwith input_shape = (1,68,2)。我的问题是哪个更好?为什么?
使用 Conv2D 时,input_shape 不必为 (1,68,2)。样本的数量与卷积无关,无论如何每次都会给层一个样本。
变化的是卷积输入的空间维度数:
68)上运行。(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 扫描)。
您可以在此处找到更多详细信息。