Keras';Conv1D?

Keras';Conv1D?,keras,conv-neural-network,stride,Keras,Conv Neural Network,Stride,目前,我正在通过测试内核大小来调整我的模型 我有以下代码: x = embedding_layer(input_4) x = Conv1D(FILTERS, KERNEL, activation='relu')(x) x = Dropout(DROPOUT)(x) x = Conv1D(FILTERS, KERNEL, activation='relu')(x) x = Dropout(DROPOUT)(x) x = Conv

目前,我正在通过测试内核大小来调整我的模型

我有以下代码:

x = embedding_layer(input_4)                
x = Conv1D(FILTERS, KERNEL, activation='relu')(x)
x = Dropout(DROPOUT)(x)            
x = Conv1D(FILTERS, KERNEL, activation='relu')(x)       
x = Dropout(DROPOUT)(x)
x = Conv1D(FILTERS, KERNEL, activation='relu')(x)       
x = Dropout(DROPOUT)(x)
x = Conv1D(FILTERS, KERNEL, activation='relu')(x) 
x = Dropout(DROPOUT)(x)            
x = Conv1D(FILTERS, KERNEL, activation='relu')(x) 
x = Dropout(DROPOUT)(x)            
x = MaxPooling1D(3)(x)

x = Conv1D(FILTERS, KERNEL, activation='relu')(x)
x = Dropout(DROPOUT)(x)            
x = Conv1D(FILTERS, KERNEL, activation='relu')(x)       
x = Dropout(DROPOUT)(x)
x = Conv1D(FILTERS, KERNEL, activation='relu')(x)       
x = Dropout(DROPOUT)(x)
x = Conv1D(FILTERS, KERNEL, activation='relu')(x) 
x = Dropout(DROPOUT)(x)            
x = Conv1D(FILTERS, KERNEL, activation='relu')(x) 
x = Dropout(DROPOUT)(x)            
x = MaxPooling1D(3)(x)
当内核为
2
3
时,网络运行正常,但从
4
开始,它会在维度上出错。我怀疑这与步幅有关。但是,
Keras
网站()没有说明默认步幅是多少

我现在的问题是:Keras’Conv1D中默认的步幅是多少?对于
4
的内核大小和
5
的内核大小,什么是合适的步幅长度?

从,默认步幅长度是1。除非您对另一个长度有具体的理由,否则步长1通常是合适的

您得到的错误可能是因为1D卷积层的输出维度为:

output_dim = 1 + (input_dim - kernel_size)/stride
在堆叠几个1D卷积层之后,您可能会到达一个输入维度小于内核大小的层。发生这种情况是因为参数
padding
的默认值是
'valid'
,这意味着输入没有被填充

相反,如果您希望在每个卷积层保留输入维度,则设置
padding='same'
会填充输入,使输出与原始输入具有相同的长度。

从,默认步幅长度为1。除非您对另一个长度有具体的理由,否则步长1通常是合适的

您得到的错误可能是因为1D卷积层的输出维度为:

output_dim = 1 + (input_dim - kernel_size)/stride
在堆叠几个1D卷积层之后,您可能会到达一个输入维度小于内核大小的层。发生这种情况是因为参数
padding
的默认值是
'valid'
,这意味着输入没有被填充

相反,如果希望在每个卷积层保留输入维度,则设置
padding='same'
将填充输入,使输出与原始输入具有相同的长度