Keras实现层的分离

本文介绍了在Keras中实现深度可分离卷积的关键步骤,特别是通道分离。通过使用Lambda层和tf.split函数,可以在第三维度上将通道分开,以适应轻量化网络结构如ShuffleNet, MobileNet和EfficientNet的需求。" 106265260,9402695,系统工程:泛化、细化与依赖解析,"['系统设计', '软件工程', '项目管理', '概念理解', '复杂系统']
摘要由CSDN通过智能技术生成

前言

笔者最近在复现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
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值