这个问题可能类似于this和this,但是在这个问题中,我想清除DepthwiseConv2D和SeparableConv2D在激活层和批处理规范化层之间的区别。深度层和点层。
mobilenet paper提到了深度可分离卷积层,如下所示:
但是tf.keras
版本在SeparableConv2D
层中实现相同的体系结构吗?如果不是,那么该层是什么样的?
答案 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卷积。
深度可分离卷积包括仅执行 深度空间卷积的第一步(作用于每个 输入通道)。