猿问

1D CNN 是否需要填充以保留输入长度?

stride = 1 和 1 滤波器的 1D CNN 不应该输出长度等于输入长度而不需要填充吗?


我认为是这种情况,但使用这些规范创建了一个 Keras 模型,当输入形状为 (17910,1) 时,输出形状为 (17902,1)。我想知道为什么尺寸减少了,因为步幅是 1 并且它是一维卷积。


model = keras.Sequential([

layers.Conv1D(filters=1,kernel_size=9,strides=1,activation=tf.nn.relu,input_shape=X_train[0].shape)

        ])

我希望这个模型的输出形状应该是 (17910,1),但显然我在这个 conv 中缺少了一个减少维度的来源。层。


有只小跳蛙
浏览 223回答 1
1回答

开心每一天1111

输出向量的长度取决于输入的长度和内核大小。由于您的内核大小为 9,因此您将获得 17902 个输入卷积,因此输出形状为 (17902,1)(无填充)。为了更好地理解:没有填充:带填充:是否应该使用填充更多的是准确性问题。正如 Ian Goodfellow、Yoshua Bengio 和 Aaaron Courville 在他们的深度学习书中发现的那样,最佳填充(至少对于 2D 图像)介于“无”和“相同”之间所以我的建议是,尝试两种不同的 CNN,它们除了填充之外具有相同的架构,并采用准确度更高的一种。
随时随地看视频慕课网APP

相关分类

Python
我要回答