Keras,如何在Convolution2D中定义填充?

时间:2017-01-16 03:59:06

标签: deep-learning keras

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参数是

  

'有效','相同'或'完整'。 ('完整'需要Theano后端。)

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

如何定义填充,如何设置它的值?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

上面公认的答案提到了Keras中的ZeroPadding2D层。但是,如果您想使用Keras未提供的其他填充(例如反射填充),则应自己实现。

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