keras中的深度可分离卷积有 SeparableConv2D与DepthwiseConv2D两种方式实现。
可分离卷积分为两步:1、深度方向的空间卷积
2、将通道进行混合的逐点卷积
传统卷积
深度可分离卷积
深度方向卷积
逐点卷积
DepthwiseConv2D仅仅实现前半部分的深度方向空间卷积
keras.layers.DepthwiseConv2D( kernel_size,
strides=(1, 1),
padding='valid',
depth_multiplier=1,
data_format=None,
activation=None,
use_bias=True,
depthwise_initializer='glorot_uniform',
bias_initializer='zeros',
depthwise_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
depthwise_constraint=None,
bias_constraint=None
)
参数:
- kernel_size: 一个整数,或者 2 个整数表示的元组或列表, 指明 2D 卷积窗口的高度和宽度。 可以是一个整数,为所有空间维度指定相同的值。
- strides: 一个整数,或者 2 个整数表示的元组或列表, 指明卷积沿高度和宽度方向的步长。 可以是一个整数,为所有空间维度指定相同的值。 指定任何 stride 值 != 1 与指定
dilation_rate
值 != 1 两者不兼容。 - padding:
"valid"
或"same"
(大小写敏感)。