conv1d with kernel_size=1 和dense layer有什么区别?

Mic*_*ela 5 neural-network conv-neural-network keras tensorflow tf.keras

我正在构建一个带有 Conv1D 层的 CNN,它训练得很好。我现在正在研究如何在将其输入到模型末尾的 Dense 层之前减少特征数量,因此我一直在减少 Dense 层的大小,但后来我看到了这篇文章。文章讨论了使用具有 kernel_size=(1,1) 的 Conv2D 过滤器来减少特征数量的效果。

我想知道使用带有 kernel_size=(1,1) 的 Conv2D 层tf.keras.layers.Conv2D(filters=n,kernel_size=(1,1))和使用相同大小的 Dense 层有什么区别tf.keras.layers.Dense(units=n)?从我的角度来看(我对神经网络相对较新),kernel_size=(1,1) 的过滤器是一个单一的数字,它本质上等同于 Dense 层中的权重,并且两个层都有偏差,所以它们是等价的,还是我误解了什么?如果我的理解是正确的,在我使用 Conv1D 层而不是 Conv2D 层的情况下,这会改变什么吗?作为是tf.keras.layers.Conv1D(filters=n, kernel_size=1)相当于tf.keras.layers.Dense(units=n)

如果您需要我提供任何信息来澄清问题,请告诉我。我最好奇的是,kernel_size=1 的 Conv1D 层和 kernel_size=(1,1) 的 Conv2D 层的行为是否与 Dense 层不同。

tod*_*day 6

是的,因为Dense层应用于其输入的最后一个维度(请参阅此答案),Dense(units=N)并且Conv1D(filters=N, kernel_size=1)(或Dense(units=N)Conv2D(filters=N, kernel_size=1))在连接和可训练参数的数量方面基本上彼此等效。