关于 kernel_size > 1 的 TimeDistributed(conv1D) 的问题

数据挖掘 喀拉斯 张量流
2022-02-11 17:24:01

我试图了解 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 的向量的长度。

我怎样才能理解这一点?

0个回答
没有发现任何回复~