前言
笔者最近在复现Shufflenet Mobilenet 和谷歌最新推出的EfficientNet结构
发现各大网络都在往轻巧化方向发展
其中一个很关键的,就是Depthwise卷积结构的提出,可以参考我上篇博客
而其中Depthwise卷积需要对单独的通道在做一次卷积,而不是多通道上进行累加
因此这就涉及到了通道的分离
下面我们直接来看代码
代码实现
import keras
from keras import layers
from keras.layers import *
from keras.utils import plot_model
from keras import Model
from keras import backend as K
import tensorflow as tf
inputs = Input((224, 224, 3))
kernel_num = 1024
split = Lambda(lambda x: tf.split(x, 3, axis=3))(inputs)
# print(split[0].shape)
conv0 = Conv2D(filters=1, kernel_size=3, padding='SAME')(split[0])
conv1 = Conv2D(filters=1, kernel_size=3, padding='SAME')(split[1])
conv2 = Conv2D(filters=1, kernel_size=3, padding='SAME')(split[2])
output = Concatenate()([conv0, conv1, conv2])
output = Conv2D(filters=128, kernel_s