总结:二者都是卷积层,只不过一个是用来处理一维特征序列数据,而另一个是用来处理二维特征数据的。
那何为一维特征序列数据、二维特征数据呢?
一维特征序列数据:注意!这里不说的一维数据,一维数据可以理解为是数据存在一个数组(列表)中,如:[1, 4, 5, 8];而一维特征序列数据是指在一个序列(时间步或位置)上每个点包含一个或多个特征的数据,特别是在处理时间序列、文本序列时。
时间序列数据是最典型的一维特征序列数据类型,这种数据通常用于预测。如:股票价格数据,每日开盘价、收盘价、最高价、最低价和交易量等信息。这些特征可以按时间顺序排列形成序列,表示为[(open, close, high, low, volume), ...]。
举一个例子:
假设我们有一个传感器记录了多个测量值(例如,温度、湿度和压力)。这些测量值以时间序列的形式记录下来。每个时间步(例如每一分钟)都有一组测量值。时间步(sequence_length):时间序列的长度,比如1小时内的60个时间步。特征数(num_features):在每个时间步上记录的特征数,比如温度、湿度、和压力,这样 num_features
就是3。
在这种情况下,数据的形状可以表示为 (batch_size, sequence_length, num_features)
。假设我们有 10 个批次(batch_size = 10
),每个批次包含 1 小时的数据(sequence_length = 60
),每分钟记录 3 个传感器值(num_features = 3
),那数据的形状就是 (10, 60, 3)
。
二维特征数据:是指数据在两个维度上都有结构或特征,比如图像、表格等。图像本质上是一个二维像素网格,每个像素可以有一个或多个通道(例如RGB图像有三个通道)。输入通常是一个四维张量,形状为 (batch_size, height, width, channels)
,其中 height
和 width
是图像的高度和宽度,channels
是图像的通道数。
了解清楚了以上内容,再来选则就很好办了。
Conv1D:
它的卷积核(滤波器)在数据的一维方向上滑动,以捕捉局部的模式和特征。卷积核是一维的,它在输入的第二个维度(即序列长度方向)上滑动,也就是我们上面举的例子的sequence_length参数。如kernel_size=3,则每次卷积操作会在时间序列的 3 个连续时间步上进行,提取这 3 个时间步中 3 个特征的组合特征。
Conv2D:
卷积核是二维的,在输入的第二个和第三个维度(即高度和宽度方向)上滑动。