了解 Conv1D 输出形状

数据挖掘 机器学习 喀拉斯 张量流 卷积神经网络
2022-02-25 20:47:05

我对 Conv1D 产生的输出形状有点困惑。考虑我使用的代码如下(为清楚起见省略了很多):

input_shape = x_train_2trans.shape
# (7425, 24, 1)

model.add(Conv1D(filters=4, input_shape=input_shape[1:], kernel_size=(3), activation=LeakyReLU))
model.add(Dropout(0.2))
model.add(Dense(1))

我尝试了 3、2 和 1 3 种不同的内核大小,其中产生的输出大小为:

(256, 2500, 12, 1), (256, 2500, 18, 1), (256, 2500, 24, 1)。

我感到困惑的是每滴内核大小之间的差异为 6。据我了解,内核大小为 3,12 应该是 21;而内核大小为 2 的 18 应该是 22,以适应具有指定内核大小的 24 的形状。

提前致谢。

1个回答

最有可能的是,问题出在输入数据中。

这是一个玩具示例。

import numpy as np
from tensorflow.keras import layers

input = np.ones((100,24,1))
input_shape = input.shape

layer = layers.Conv1D(filters=4, input_shape=input_shape[1:], kernel_size=(2))# Kernel=2
out = layer(input)
out.shape

layer = layers.Conv1D(filters=4, input_shape=input_shape[1:], kernel_size=(4))# Kernel=4
out = layer(input)
out.shape

输出-
TensorShape([100, 23, 4])
TensorShape([100, 21, 4])

最后一个维度是由于过滤器计数,它将成为下一层的特征