【问题标题】:Keras, How to define padding in Convolution2D?Keras,如何在 Convolution2D 中定义填充?
【发布时间】:2017-05-30 20:51:36
【问题描述】:

Convolution2D docs of keras中,我发现padding的定义没有详细说明

keras.layers.convolutional.Convolution2D(nb_filter, 
                                         nb_row, 
                                         nb_col, 
                                         init='glorot_uniform', 
                                         activation=None, 
                                         weights=None, 
                                         border_mode='valid', 
                                         subsample=(1, 1), 
                                         dim_ordering='default', 
                                         W_regularizer=None, 
                                         b_regularizer=None, 
                                         activity_regularizer=None, 
                                         W_constraint=None, 
                                         b_constraint=None, 
                                         bias=True)

subsample 参数是

长度为 2 的元组。对输出进行二次采样的因子。在其他地方也称为跨步。

我认为这是大步。

border_mode 参数是

“有效”、“相同”或“完整”。 ('full' 需要 Theano 后端。)

validsame 也是 TensorFlow 的 conv2d 函数中的参数。

如何定义padding,如何设置它的值?

【问题讨论】:

    标签: deep-learning keras


    【解决方案1】:

    你想要的是ZeroPadding2D 层,只要把它放在一个卷积层之前。这比仅仅将这个功能放在 Convolution2D 中更灵活。

    【讨论】:

    • Thx,如果代码中没有定义ZeroPadding2D,是不是意味着Convolution2D中默认padding为1,输出大小W'=(W-F+2*P)/S + 1
    • @AlexanderYau 默认填充取决于边框模式。
    • @Matias:还有内核大小。
    【解决方案2】:

    上面接受的答案提到了 Keras 中的 ZeroPadding2D 层。但是,如果你想使用一些 Keras 没有提供的其他类型的填充,例如反射填充,你应该自己实现它们。

    据我所知,在 Keras 中自定义填充层有两种方法: 1.在Keras中使用Lambda层,并从Keras的后端(通常是TensorFlow)调用padding函数。 2. 定义自己的Layer 类。详情请见this question

    【讨论】:

      猜你喜欢
      • 2015-09-15
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 2018-05-05
      • 2016-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-05-25
      相关资源
      最近更新 更多