我试图了解 conv1D 在 keras 中的工作原理。如果我尝试,
timestep = 10
input_dim = 1
newmodel.add(Conv1D(filters=64, kernel_size=1,activation='relu',input_shape=(timestep, input_dim)))
newmodel.summary()
我了解 1D conv 的工作原理如图所示。

我希望有一个输出层(无、8、64)。
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv1d_56 (Conv1D) (None, 9, 64) 192
=================================================================
Total params: 192
Trainable params: 192
Non-trainable params: 0
_________________________________________________________________
现在如果我使用
timestep = 10
input_dim = 1
newmodel.add(TimeDistributed(Conv1D(filters=64, kernel_size=2,activation='relu'), input_shape=(None, timestep, input_dim)))
newmodel.summary()
我得到输出形状,
Model: "sequential_24"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
time_distributed_35 (TimeDis (None, None, 9, 64) 192
=================================================================
Total params: 192
Trainable params: 192
Non-trainable params: 0
_________________________________________________________________
这里对输入的每个时间步都应用了一个 conv1D 层,但输入的每个时间步都是一个 (1,1) 向量。
由于卷积窗口是随时间变化的,我怎么能让 kernel_size > 1 因为 kernel_size 必须小于在我们的例子中为 1 的向量的长度。
我怎样才能理解这一点?