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

Python 1D CNN是否需要填充以保持输入长度?,python,tensorflow,keras,neural-network,conv-neural-network,Python,Tensorflow,Keras,Neural Network,Conv Neural Network,步幅为1且滤波器为1的1D CNN的输出长度不应该等于输入长度,而不需要填充吗 我原以为是这样的,但创建了一个具有这些规范的Keras模型,该模型表示输出形状为17902,1,而输入形状为17910,1。我想知道为什么维度被减少了,因为步幅是1,是1D卷积 model = keras.Sequential([ layers.Conv1D(filters=1,kernel_size=9,strides=1,activation=tf.nn.relu,input_shape=X_train[0].s

步幅为1且滤波器为1的1D CNN的输出长度不应该等于输入长度,而不需要填充吗

我原以为是这样的,但创建了一个具有这些规范的Keras模型,该模型表示输出形状为17902,1,而输入形状为17910,1。我想知道为什么维度被减少了,因为步幅是1,是1D卷积

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.层中缺少一个降维的来源。

输出向量的长度取决于输入的长度和内核大小。由于内核大小为9,因此输入将得到17902个卷积,因此输出为17902,1形状,无需填充

为了更好地理解:

无填充:

带填充:

你是否应该使用填充物更多的是一个准确性的问题。正如伊恩·古德费罗(Ian Goodfello)、约书亚·本吉奥(Yoshua Bengio)和阿隆·库尔维尔(Aaron Courville)在他们的书中发现的那样,至少2D图像的最佳填充介于无和相同之间

因此,我的建议是,尝试两种不同的CNN,除了填充之外,它们具有相同的体系结构,并采用精度更好的CNN


源:

输出向量的长度取决于输入的长度和内核大小。由于内核大小为9,因此输入将得到17902个卷积,因此输出为17902,1形状,无需填充

为了更好地理解:

无填充:

带填充:

你是否应该使用填充物更多的是一个准确性的问题。正如伊恩·古德费罗(Ian Goodfello)、约书亚·本吉奥(Yoshua Bengio)和阿隆·库尔维尔(Aaron Courville)在他们的书中发现的那样,至少2D图像的最佳填充介于无和相同之间

因此,我的建议是,尝试两种不同的CNN,除了填充之外,它们具有相同的体系结构,并采用精度更好的CNN


来源:

谢谢-我在1D卷积中误解了内核大小!谢谢-我在1D卷积中误解了内核大小!