在Depthwise操作之后,SeparableConv2D是否包括批处理规范化和Relu?

时间:2020-09-21 09:07:53

标签: python tensorflow keras deep-learning tf.keras

这个问题可能类似于thisthis,但是在这个问题中,我想清除DepthwiseConv2D和SeparableConv2D在激活层和批处理规范化层之间的区别。深度层和点层。

mobilenet paper提到了深度可分离卷积层,如下所示: enter image description here

但是tf.keras版本在SeparableConv2D层中实现相同的体系结构吗?如果不是,那么该层是什么样的?

1 个答案:

答案 0 :(得分:1)

老实说,唯一的了解方法是通过

加载模型
from tensorflow.keras.applications import MobileNet
model = MobileNet()
model.summary()

实际上,当您检查结果时,唯一存在的图层是DepthwiseConv2D

实际上,检查model.summary()会得出以下结果:

(请注意,这是一个Depthwise + Pointwise的块)

conv_pad_6(ZeroPadding2D)(无,29,29,256)0
_________________________________________________________________ conv_dw_6(DepthwiseConv2D)(无,14,14,14,256)2304
_________________________________________________________________ conv_dw_6_bn(BatchNormaliza(None,14,14,14,256)1024
_________________________________________________________________ conv_dw_6_relu(ReLU)(无,14,14,14,256)0
_________________________________________________________________ conv_pw_6(Conv2D)(无,14,14,14,512)131072
_________________________________________________________________ conv_pw_6_bn(BatchNormaliza(None,14,14,14,512)2048
_________________________________________________________________ conv_pw_6_relu(ReLU)(无,14、14、512、512)0


前三层执行深度可分离卷积,而后三层执行逐点卷积。您可以从层的名称中看到哪些层是第一个操作(dw)和第二个操作(pw)的一部分。

通过检查这些层,我们还可以看到操作的顺序,即batch normalization操作发生在relu activation之前。如上面的描述所示,这对于深度卷积和点向卷积均有效。

但是,您的观察确实不错,因为架构中不存在1x1卷积,至少根据model.summary()

来自Keras / TF文档:

“”“”深度可分离的2D卷积。

深度可分离卷积包括仅执行 深度空间卷积的第一步(作用于每个 输入通道)。