【问题标题】:What is the default stride length in Keras' Conv1D?Keras 的 Conv1D 中的默认步长是多少?
【发布时间】:2019-01-03 15:54:22
【问题描述】:

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

我有以下code

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)

当内核为23 时,网络运行良好,但从4 开始,它会遇到有关维度的错误。我怀疑这与步幅有关。但是,Keras 网站 (https://keras.io/layers/convolutional/) 并没有说明默认步幅是多少。

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

【问题讨论】:

    标签: keras conv-neural-network stride


    【解决方案1】:

    Conv1D 开始,默认步长为 1。除非您有其他长度的具体理由,否则步长为 1 通常是合适的。

    你得到的错误可能是因为一维卷积层的输出维度是:

    output_dim = 1 + (input_dim - kernel_size)/stride
    

    在堆叠几个 1D 卷积层之后,您可能会到达一个输入维度小于内核大小的层。这是因为参数padding 的默认值是'valid',这意味着输入没有被填充。

    如果您想在每个卷积层保留输入维度,设置 padding='same' 会导致对输入进行填充,以使输出与原始输入具有相同的长度。

    【讨论】:

      【解决方案2】:

      默认步幅实际上是 (1,1),这意味着过滤器每水平移动一个像素,过滤器每垂直移动一个像素,过滤器将向下移动一个像素。

      【讨论】:

        猜你喜欢
        • 2019-05-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-10-20
        • 2018-07-12
        • 2015-09-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多