在Conv1D中大步使用

时间:2019-02-17 11:12:06

标签: python tensorflow keras conv-neural-network

这是我第一次尝试在时间序列数据中使用Conv1D。我了解默认情况下conv1d的步幅为1。但是,如果我有1500x9大小的数据,并且使用了32个大小为250的过滤器,步幅为9。

我尝试搜索许多资源,但没有得到很好的解释。如果我使用9作为跨度值,则我的‘model.summary()’看起来像enter image description here

model=Sequential()
model.add(Conv1D(32,250,padding='same',input_shape=(1500,9), 
kernel_regularizer=regularizers.l2(0.01)))
c1 = MaxPooling1D(2)
model.add(c1)
model.add(Dropout(0.5))
model.add(BatchNormalization())

如果我使用stride = 1,则model.summary()看起来像这样enter image description here

它如何工作?如果有人可以解释我会很高兴。

1 个答案:

答案 0 :(得分:1)

例如,如果您进行计算,则是因为渐变:

input shape:[batch,1500,9]
filtershape:[32,9,250]
stride:1

如果padding =“ same”,则适用于1500中的每32个过滤器,并以1扫1遍,在这种情况下,优化器将过滤器与1500(int(1500/1))的梯度进行关联 但是,如果将跨步设置为9,则当您使用166(int(1500/9))进程的梯度进行此优化器关联过滤器时,它会在1500中的每32个过滤器上进行9乘9的过滤。

166过程的梯度比1500更容易处理。这样做会破坏输出之间的相关性。它变得更容易操作,但这并不意味着准确性值会更高。

如果您想更好地理解,建议您阅读此文档: https://www.tensorflow.org/api_guides/python/nn#Convolution