【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

各位同学好,今天和大家分享一下如何使用 Tensorflow 复现 EfficientNet卷积神经网络模型。

EfficientNet 的网络结构和 MobileNetV3 比较相似,建议大家在学习 EfficientNet 之前先学习一下 MobileNetV3

MobileNetV3: https://blog.csdn.net/dgvv4/article/details/123476899

EfficientNet-B7在imagenet上准确率达到了当年最高的84.3%,与之前准确率最高的GPipe相比,参数量仅为其1/8.4,推理速度提高了6.1倍。

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

1. 引言

(1)根据以往的经验, 增加网络的深度能得到更加丰富、复杂的特征,并且能够很好的应用到其他任务中。但 网络的深度过深会面临梯度消失,训练困难的问题

(2) 增加网络的宽度能够获得更高细粒度的特征,并且也更容易训练,但对于 宽度很大而深度很浅的网络往往很难学习到更深层次的特征

(3) 增加输入网络的图像分辨率能够潜在的获得更高细粒度的特征模板,但对于非常高的输入分辨率,准确率的增益也会减小。并且 大分辨率的图像会增加计算量

论文中就研究了如果同时增加网络的宽度、深度、分辨率,那会有什么样的效果。如下图所示,红色曲线就是同时增加网络的深度、宽度和分辨率,网络效果明显提高。

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

2. 网络核心模块

网络的核心模块大体上和MobileNetV3相似,这里再简单复习一下

2.1 深度可分离卷积

MobileNetV1 中主要使用了深度可分离卷积模块,大大减少了参数量和计算量。

普通卷积一个卷积核处理所有的通道,输入特征图有多少个通道,卷积核就有几个通道,一个卷积核生成一张特征图。

深度可分离卷积可理解为 深度卷积 + 逐点卷积

深度卷积只处理长宽方向的空间信息;逐点卷积只处理跨通道方向的信息。能大大减少参数量,提高计算效率

深度卷积:一个卷积核只处理一个通道,即 每个卷积核只处理自己对应的通道输入特征图有多少个通道就有多少个卷积核。将每个卷积核处理后的特征图堆叠在一起。输入和输出特征图的通道数相同。

由于只处理长宽方向的信息会导致丢失跨通道信息,为了将跨通道的信息补充回来,需要进行逐点卷积。

逐点卷积:是使用 1×1卷积对跨通道维度处理有多少个1×1卷积核就会生成多少个特征图

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

2.2 逆转残差模块

逆转残差模块流程如下。输入图像,先使用 1×1卷积提升通道数;然后在高维空间下使用 深度卷积;再使用 1×1卷积下降通道数降维时采用线性激活函数(y=x)。当 步长等于1且输入和输出特征图的shape相同时,使用 残差连接输入和输出;当 步长=2(下采样阶段)直接输出降维后的特征图。

对比 ResNet 的残差结构。输入图像,先使用 1×1卷积下降通道数;然后在低维空间下使用 标准卷积,再使用 1×1卷积上升通道数激活函数都是ReLU函数。当 步长等于1且输入和输出特征图的shape相同时,使用 残差连接输入和输出;当 步长=2(下采样阶段)直接输出降维后的特征图。

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

2.3 SE注意力机制

(1)先将特征图进行 全局平均池化,特征图有多少个通道,那么 池化结果(一维向量)就有多少个元素, [h, w, c]==>[None, c]

(2)然后经过两个全连接层得到输出向量。 在EfficientNet中第一个全连接层降维, 输出通道数等于该逆转残差模块的输入图像的通道数的1/4第二个全连接层升维, 输出通道数等于全局平均池化前的特征图的通道数

(3) 全连接层的输出向量可理解为, 向量的每个元素是对每张特征图进行分析得出的权重关系。 比较重要的特征图就会赋予更大的权重,即该特征图对应的向量元素的值较大。反之,不太重要的特征图对应的权重值较小。

(4)经过两个全连接层得到一个 由channel个元素组成的向量每个元素是针对每个通道的权重,将权重和原特征图的像素值对应相乘,得到新的特征图数据

以下图为例,特征图经过两个全连接层之后,比较重要的特征图对应的向量元素的值就较大。将得到的权重和对应特征图中的所有元素相乘,得到新的输出特征图

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

2.4 总体流程

基本模块(stride=1):图像输入,先经过 1×1卷积上升通道数;然后在高纬空间下使用 深度卷积;再经过 SE注意力机制优化特征图数据;再经过 1×1卷积下降通道数使用线性激活函数);若此时 输入特征图的shape和输出特征图的shape相同,那么 对1×1卷积降维后的特征图加一个Dropout层,防止过拟合; 最后残差连接输入和输出

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

下采样模块(stride=2):大致流程和基本模块相同,不采用Dropout层和残差连接,1×1卷积降维后直接输出特征图。

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

3. 代码复现

3.1 网络架构图

EfficientNet-B0为例,网络结构如下图所示。

【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

3.2 EfficientNet 系列网络参数

(1) width_coefficient 代表通道维度上的倍率因子。比如,在EfficientNet-B0中Stage1的3×3卷积层使用的卷积核个数是32个,那么EfficientNet-B6中Stage1的3×3卷积层使用卷积核个数是 32*1.8=57.6,取整到离57.6最近的8的倍数,即56

(2)depth _coefficient 代表深度维度上的倍率因子。比如,在EfficientNet-B0中Stage7的layers=4,即该模块重复4次。那么在EfficientNet-B6中Stage7的layers=4*2.6=10.4,向上取整为11。

(3)dropout_rate 代表Dropout的随机杀死神经元的概率

'''
Model           |  input_size  |  width_coefficient  |  depth_coefficient  | dropout_rate
EfficientNetB1  |   240x240    |    1.0              |      1.1            |    0.2
EfficientNetB3  |   300x300    |    1.2              |      1.4            |    0.3
EfficientNetB5  |   456x456    |    1.6              |      2.2            |    0.4
EfficientNetB7  |   600x600    |    2.0              |      3.1            |    0.5
'''

3.3 网络核心模块代码

(1)标准卷积块

一个标准卷积块由 普通卷积+批标准化+激活函数 组成

#(1)激活函数
def swish(x):
    # swish激活函数
    x = x*tf.nn.sigmoid(x)
    return x

#(2)标准卷积
def conv_block(input_tensor, filters, kernel_size, stride, activation=True):

    # 普通卷积+标准化+激活
    x = layers.Conv2D(filters = filters,  # 输出特征图个数
                      kernel_size = kernel_size,  # 卷积核size
                      strides = stride,  # 步长=2,size长宽减半
                      use_bias = False)(input_tensor)  # 有BN层就不要偏置

    x = layers.BatchNormalization()(x)  # 批标准化

    if activation:  # 判断是否需要使用激活函数
        x = swish(x)  # 激活函数

    return x

(2)SE注意力机制

为了减少计算量,SE注意力机制中的全连接层可以换成11卷积层。这里要注意, 第一个卷积层降维的通道数,是MBConv模块的输入特征图通道数的1/4,也就是 在逆转残差模块中11卷积升维之前的特征图通道数的1/4**

#(3)SE注意力机制
def squeeze_excitation(input_tensor, inputs_channel):

    squeeze = inputs_channel / 4  # 通道数下降为输入该MBConv的特征图的1/4
    excitation = input_tensor.shape[-1]  # 通道数上升为深度卷积的输出特征图个数

    # 全局平均池化 [h,w,c]==>[None,c]
    x = layers.GlobalAveragePooling2D()(input_tensor)
    # [None,c]==>[1,1,c]
    x = layers.Reshape(target_shape=(1, 1, x.shape[-1]))(x)

    # 1*1卷积降维,通道数变为输入MBblock模块的图像的通道数的1/4
    x = layers.Conv2D(filters = squeeze,
                      kernel_size = (1,1),
                      strides = 1,
                      padding = 'same')(x)

    x = swish(x)  # swish激活函数

    # 1*1卷积升维,通道数变为深度卷积的输出特征图个数
    x = layers.Conv2D(filters = excitation,
                      kernel_size = (1,1),
                      strides = 1,
                      padding = 'same')(x)

    x = tf.nn.sigmoid(x)  # sigmoid激活函数

    # 将深度卷积的输入特征图的每个通道和SE得到的针对每个通道的权重相乘
    x = layers.multiply([input_tensor, x])

    return x

(3)逆转残差模块

以基本模块为例(stride=1)。如果需要提升特征图的通道数,那么先经过1×1卷积上升通道数;然后在高纬空间下使用深度卷积;再经过SE注意力机制优化特征图数据;再经过1×1卷积下降通道数(使用线性激活函数,y=x);若此时输入特征图的shape和输出特征图的shape相同,那么对1×1卷积降维后的特征图加一个Dropout层,防止过拟合;最后残差连接输入和输出。

如第2.4小节所示。

#(4)逆转残差模块
def MBConv(x, expansion, out_channel, kernel_size, stride, dropout_rate):

    '''
    expansion代表第一个1*1卷积上升的通道数是输入图像通道数的expansion倍
    out_channel代表MBConv模块输出通道数个数,即第二个1*1卷积的卷积核个数
    dropout_rate代表dropout层随机杀死神经元的概率
    '''
    # 残差边
    residual = x

    # 输入的特征图的通道数
    in_channel = x.shape[-1]

    # ① 若expansion==1,1*1卷积升维就不用执行
    if expansion != 1:
        # 调用自定义的1*1标准卷积
        x = conv_block(x,
                       filters=in_channel*expansion,  # 通道数上升expansion倍
                       kernel_size=(1,1), stride=1, activation=True)

    # ② 深度卷积
    x = layers.DepthwiseConv2D(kernel_size = kernel_size,
                               strides = stride,  # 步长=2下采样
                               padding = 'same',  # 下采样时,特征图长宽减半
                               use_bias = False)(x)  # 有BN层就不用偏置

    x = layers.BatchNormalization()(x)  # 批标准化
    x = swish(x)  # swish激活

    # ③ SE注意力机制,传入深度卷积输出的tensor,和输入至MBConv模块的特征图通道数
    x = squeeze_excitation(x, inputs_channel=in_channel)

    # ④ 1*1卷积上升通道数,使用线性激活,即卷积+BN
    x = conv_block(input_tensor = x,
                   filters = out_channel,  # 1*1卷积输出通道数就是MBConv模块输出通道数
                   kernel_size=(1,1), stride=1,
                   activation = False)

    # ⑤ 只有使用残差连接,并且dropout_rate>0时才会使用Dropout层
    if stride == 1 and residual.shape == x.shape:

        # 判断dropout_rate是否大于0
        if dropout_rate > 0:
            x = layers.Dropout(rate = dropout_rate)(x)

        # 残差连接输入和输出
        x = layers.Add()([residual, x])
        return x

    # 如果步长=2,直接输出1*1降维的结果
    return x

3.4 完整代码

以EfficientNet-B0为例,展示代码,如果需要使用其他EfficientNet系列的网络,只需要在主函数中(第9步)修改参数即可。

import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import Model, layers
import math

#(1)激活函数
def swish(x):
    # swish激活函数
    x = x*tf.nn.sigmoid(x)
    return x

#(2)标准卷积
def conv_block(input_tensor, filters, kernel_size, stride, activation=True):

    # 普通卷积+标准化+激活
    x = layers.Conv2D(filters = filters,  # 输出特征图个数
                      kernel_size = kernel_size,  # 卷积核size
                      strides = stride,  # 步长=2,size长宽减半
                      use_bias = False)(input_tensor)  # 有BN层就不要偏置

    x = layers.BatchNormalization()(x)  # 批标准化

    if activation:  # 判断是否需要使用激活函数
        x = swish(x)  # 激活函数

    return x

#(3)SE注意力机制
def squeeze_excitation(input_tensor, inputs_channel):

    squeeze = inputs_channel / 4  # 通道数下降为输入该MBConv的特征图的1/4
    excitation = input_tensor.shape[-1]  # 通道数上升为深度卷积的输出特征图个数

    # 全局平均池化 [h,w,c]==>[None,c]
    x = layers.GlobalAveragePooling2D()(input_tensor)
    # [None,c]==>[1,1,c]
    x = layers.Reshape(target_shape=(1, 1, x.shape[-1]))(x)

    # 1*1卷积降维,通道数变为输入MBblock模块的图像的通道数的1/4
    x = layers.Conv2D(filters = squeeze,
                      kernel_size = (1,1),
                      strides = 1,
                      padding = 'same')(x)

    x = swish(x)  # swish激活函数

    # 1*1卷积升维,通道数变为深度卷积的输出特征图个数
    x = layers.Conv2D(filters = excitation,
                      kernel_size = (1,1),
                      strides = 1,
                      padding = 'same')(x)

    x = tf.nn.sigmoid(x)  # sigmoid激活函数

    # 将深度卷积的输入特征图的每个通道和SE得到的针对每个通道的权重相乘
    x = layers.multiply([input_tensor, x])

    return x

#(4)逆转残差模块
def MBConv(x, expansion, out_channel, kernel_size, stride, dropout_rate):

    '''
    expansion代表第一个1*1卷积上升的通道数是输入图像通道数的expansion倍
    out_channel代表MBConv模块输出通道数个数,即第二个1*1卷积的卷积核个数
    dropout_rate代表dropout层随机杀死神经元的概率
    '''
    # 残差边
    residual = x

    # 输入的特征图的通道数
    in_channel = x.shape[-1]

    # ① 若expansion==1,1*1卷积升维就不用执行
    if expansion != 1:
        # 调用自定义的1*1标准卷积
        x = conv_block(x,
                       filters=in_channel*expansion,  # 通道数上升expansion倍
                       kernel_size=(1,1), stride=1, activation=True)

    # ② 深度卷积
    x = layers.DepthwiseConv2D(kernel_size = kernel_size,
                               strides = stride,  # 步长=2下采样
                               padding = 'same',  # 下采样时,特征图长宽减半
                               use_bias = False)(x)  # 有BN层就不用偏置

    x = layers.BatchNormalization()(x)  # 批标准化
    x = swish(x)  # swish激活

    # ③ SE注意力机制,传入深度卷积输出的tensor,和输入至MBConv模块的特征图通道数
    x = squeeze_excitation(x, inputs_channel=in_channel)

    # ④ 1*1卷积上升通道数,使用线性激活,即卷积+BN
    x = conv_block(input_tensor = x,
                   filters = out_channel,  # 1*1卷积输出通道数就是MBConv模块输出通道数
                   kernel_size=(1,1), stride=1,
                   activation = False)

    # ⑤ 只有使用残差连接,并且dropout_rate>0时才会使用Dropout层
    if stride == 1 and residual.shape == x.shape:

        # 判断dropout_rate是否大于0
        if dropout_rate > 0:
            x = layers.Dropout(rate = dropout_rate)(x)

        # 残差连接输入和输出
        x = layers.Add()([residual, x])
        return x

    # 如果步长=2,直接输出1*1降维的结果
    return x

#(5)一个stage模块是由多个MBConv模块组成
def stage(x, n, out_channel, expansion, kernel_size, stride, dropout_rate):

    # 重复执行MBConv模块n次
    for _ in range(n):
        # 逆残差模块
        x = MBConv(x, expansion, out_channel, kernel_size, stride, dropout_rate)

    return x  # 返回每个stage的输出特征图

#(6)通道数乘维度因子后,取8的倍数
def round_filters(filters, width_coefficient, divisor=8):

    filters = filters * width_coefficient  # 通道数乘宽度因子
    # 新的通道数是距离远通道数最近的8的倍数
    new_filters = max(divisor, int(filters + divisor/2) // divisor * divisor)

    #
    if new_filters < 0.9 * filters:
        new_filters += filters

    return new_filters

#(7)深度乘上深度因子后,向上取整
def round_repeats(repeats, depth_coefficient):
    # 求得每一个卷积模块重复执行的次数
    repeats = int(math.ceil(repeats * depth_coefficient))  #向上取整后小数部分=0,int()舍弃小数部分
    return repeats

#(8)主干模型结构
def efficientnet(input_shape, classes, width_coefficient, depth_coefficient, dropout_rate):
    '''
    width_coefficient,通道维度上的倍率因子。与卷积核个数相乘,取整到离它最近的8的倍数
    depth_coefficient,深度维度上的倍率因子。和模块重复次数相乘,向上取整
    dropout_rate,dropout层杀死神经元的概率
    '''

    # 构建输入层
    inputs = keras.Input(shape=input_shape)

    # 标准卷积 [224,224,3]==>[112,112,32]
    x = conv_block(inputs, filters=round_filters(32, width_coefficient),  # 维度因子改变卷积核个数
                   kernel_size=(3,3), stride=2)

    # [112,112,32]==>[112,112,16]
    x = stage(x, n=round_repeats(1, depth_coefficient), expansion=1, out_channel=round_filters(16, width_coefficient),
               kernel_size=(3,3), stride=1, dropout_rate=dropout_rate)

    # [112,112,16]==>[56,56,24]
    x = stage(x, n=round_repeats(2, depth_coefficient), out_channel=round_filters(24, width_coefficient),
              expansion=6, kernel_size=(3,3), stride=2, dropout_rate=dropout_rate)

    # [56,56,24]==>[28,28,40]
    x = stage(x, n=round_repeats(2, depth_coefficient), out_channel=round_filters(40, width_coefficient),
              expansion=6, kernel_size=(5,5), stride=2, dropout_rate=dropout_rate)

    # [28,28,40]==>[14,14,80]
    x = stage(x, n=round_repeats(3, depth_coefficient), out_channel=round_filters(80, width_coefficient),
              expansion=6, kernel_size=(3,3), stride=2, dropout_rate=dropout_rate)

    # [14,14,80]==>[14,14,112]
    x = stage(x, n=round_repeats(3, depth_coefficient), out_channel=round_filters(112, width_coefficient),
              expansion=6, kernel_size=(5,5), stride=1, dropout_rate=dropout_rate)

    # [14,14,112]==>[7,7,192]
    x = stage(x, n=round_repeats(4, depth_coefficient), out_channel=round_filters(192, width_coefficient),
              expansion=6, kernel_size=(5,5), stride=2, dropout_rate=dropout_rate)

    # [7,7,192]==>[7,7,320]
    x = stage(x, n=round_repeats(1, depth_coefficient), out_channel=round_filters(320, width_coefficient),
              expansion=6, kernel_size=(3,3), stride=1, dropout_rate=dropout_rate)

    # [7,7,320]==>[7,7,1280]
    x = layers.Conv2D(filters=1280, kernel_size=(1*1), strides=1,
                      padding='same', use_bias=False)(x)
    x = layers.BatchNormalization()(x)
    x = swish(x)

    # [7,7,1280]==>[None,1280]
    x = layers.GlobalAveragePooling2D()(x)

    # [None,1280]==>[None,1000]
    x = layers.Dropout(rate=dropout_rate)(x)  # 随机杀死神经元防止过拟合
    logits = layers.Dense(classes)(x)   # 训练时再使用softmax

    # 构建模型
    model = Model(inputs, logits)

    return model

#(9)接收网络模型
if __name__ == '__main__':

    # 以efficientnetB0为例,输入参数
    model = efficientnet(input_shape=[224,224,3], classes=1000,  # 输入图象size,分类数
                         width_coefficient=1.0, depth_coefficient=1.0,
                         dropout_rate=0.2)

    model.summary()  # 参看网络模型结构

3.5 查看网络架构

使用model.summary()查看网络架构,EfficientNet-B0有五百多万参数

Model: "model"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to
==================================================================================================
input_1 (InputLayer)            [(None, 224, 224, 3) 0
__________________________________________________________________________________________________
conv2d (Conv2D)                 (None, 111, 111, 32) 864         input_1[0][0]
__________________________________________________________________________________________________
batch_normalization (BatchNorma (None, 111, 111, 32) 128         conv2d[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid (TFOpLambda)    (None, 111, 111, 32) 0           batch_normalization[0][0]
__________________________________________________________________________________________________
tf.math.multiply (TFOpLambda)   (None, 111, 111, 32) 0           batch_normalization[0][0]
                                                                 tf.math.sigmoid[0][0]
__________________________________________________________________________________________________
depthwise_conv2d (DepthwiseConv (None, 111, 111, 32) 288         tf.math.multiply[0][0]
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 111, 111, 32) 128         depthwise_conv2d[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_1 (TFOpLambda)  (None, 111, 111, 32) 0           batch_normalization_1[0][0]
__________________________________________________________________________________________________
tf.math.multiply_1 (TFOpLambda) (None, 111, 111, 32) 0           batch_normalization_1[0][0]
                                                                 tf.math.sigmoid_1[0][0]
__________________________________________________________________________________________________
global_average_pooling2d (Globa (None, 32)           0           tf.math.multiply_1[0][0]
__________________________________________________________________________________________________
reshape (Reshape)               (None, 1, 1, 32)     0           global_average_pooling2d[0][0]
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 1, 1, 8)      264         reshape[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_2 (TFOpLambda)  (None, 1, 1, 8)      0           conv2d_1[0][0]
__________________________________________________________________________________________________
tf.math.multiply_2 (TFOpLambda) (None, 1, 1, 8)      0           conv2d_1[0][0]
                                                                 tf.math.sigmoid_2[0][0]
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 1, 1, 32)     288         tf.math.multiply_2[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_3 (TFOpLambda)  (None, 1, 1, 32)     0           conv2d_2[0][0]
__________________________________________________________________________________________________
multiply (Multiply)             (None, 111, 111, 32) 0           tf.math.multiply_1[0][0]
                                                                 tf.math.sigmoid_3[0][0]
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 111, 111, 16) 512         multiply[0][0]
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 111, 111, 16) 64          conv2d_3[0][0]
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 111, 111, 96) 1536        batch_normalization_2[0][0]
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 111, 111, 96) 384         conv2d_4[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_4 (TFOpLambda)  (None, 111, 111, 96) 0           batch_normalization_3[0][0]
__________________________________________________________________________________________________
tf.math.multiply_3 (TFOpLambda) (None, 111, 111, 96) 0           batch_normalization_3[0][0]
                                                                 tf.math.sigmoid_4[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_1 (DepthwiseCo (None, 56, 56, 96)   864         tf.math.multiply_3[0][0]
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 56, 56, 96)   384         depthwise_conv2d_1[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_5 (TFOpLambda)  (None, 56, 56, 96)   0           batch_normalization_4[0][0]
__________________________________________________________________________________________________
tf.math.multiply_4 (TFOpLambda) (None, 56, 56, 96)   0           batch_normalization_4[0][0]
                                                                 tf.math.sigmoid_5[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 96)           0           tf.math.multiply_4[0][0]
__________________________________________________________________________________________________
reshape_1 (Reshape)             (None, 1, 1, 96)     0           global_average_pooling2d_1[0][0]
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 1, 1, 4)      388         reshape_1[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_6 (TFOpLambda)  (None, 1, 1, 4)      0           conv2d_5[0][0]
__________________________________________________________________________________________________
tf.math.multiply_5 (TFOpLambda) (None, 1, 1, 4)      0           conv2d_5[0][0]
                                                                 tf.math.sigmoid_6[0][0]
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 1, 1, 96)     480         tf.math.multiply_5[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_7 (TFOpLambda)  (None, 1, 1, 96)     0           conv2d_6[0][0]
__________________________________________________________________________________________________
multiply_1 (Multiply)           (None, 56, 56, 96)   0           tf.math.multiply_4[0][0]
                                                                 tf.math.sigmoid_7[0][0]
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 56, 56, 24)   2304        multiply_1[0][0]
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 56, 56, 24)   96          conv2d_7[0][0]
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 56, 56, 144)  3456        batch_normalization_5[0][0]
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 56, 56, 144)  576         conv2d_8[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_8 (TFOpLambda)  (None, 56, 56, 144)  0           batch_normalization_6[0][0]
__________________________________________________________________________________________________
tf.math.multiply_6 (TFOpLambda) (None, 56, 56, 144)  0           batch_normalization_6[0][0]
                                                                 tf.math.sigmoid_8[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_2 (DepthwiseCo (None, 28, 28, 144)  1296        tf.math.multiply_6[0][0]
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 28, 28, 144)  576         depthwise_conv2d_2[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_9 (TFOpLambda)  (None, 28, 28, 144)  0           batch_normalization_7[0][0]
__________________________________________________________________________________________________
tf.math.multiply_7 (TFOpLambda) (None, 28, 28, 144)  0           batch_normalization_7[0][0]
                                                                 tf.math.sigmoid_9[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_2 (Glo (None, 144)          0           tf.math.multiply_7[0][0]
__________________________________________________________________________________________________
reshape_2 (Reshape)             (None, 1, 1, 144)    0           global_average_pooling2d_2[0][0]
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 1, 1, 6)      870         reshape_2[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_10 (TFOpLambda) (None, 1, 1, 6)      0           conv2d_9[0][0]
__________________________________________________________________________________________________
tf.math.multiply_8 (TFOpLambda) (None, 1, 1, 6)      0           conv2d_9[0][0]
                                                                 tf.math.sigmoid_10[0][0]
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 1, 1, 144)    1008        tf.math.multiply_8[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_11 (TFOpLambda) (None, 1, 1, 144)    0           conv2d_10[0][0]
__________________________________________________________________________________________________
multiply_2 (Multiply)           (None, 28, 28, 144)  0           tf.math.multiply_7[0][0]
                                                                 tf.math.sigmoid_11[0][0]
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 28, 28, 24)   3456        multiply_2[0][0]
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 28, 28, 24)   96          conv2d_11[0][0]
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 28, 28, 144)  3456        batch_normalization_8[0][0]
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 28, 28, 144)  576         conv2d_12[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_12 (TFOpLambda) (None, 28, 28, 144)  0           batch_normalization_9[0][0]
__________________________________________________________________________________________________
tf.math.multiply_9 (TFOpLambda) (None, 28, 28, 144)  0           batch_normalization_9[0][0]
                                                                 tf.math.sigmoid_12[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_3 (DepthwiseCo (None, 14, 14, 144)  3600        tf.math.multiply_9[0][0]
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 14, 14, 144)  576         depthwise_conv2d_3[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_13 (TFOpLambda) (None, 14, 14, 144)  0           batch_normalization_10[0][0]
__________________________________________________________________________________________________
tf.math.multiply_10 (TFOpLambda (None, 14, 14, 144)  0           batch_normalization_10[0][0]
                                                                 tf.math.sigmoid_13[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_3 (Glo (None, 144)          0           tf.math.multiply_10[0][0]
__________________________________________________________________________________________________
reshape_3 (Reshape)             (None, 1, 1, 144)    0           global_average_pooling2d_3[0][0]
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 1, 1, 6)      870         reshape_3[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_14 (TFOpLambda) (None, 1, 1, 6)      0           conv2d_13[0][0]
__________________________________________________________________________________________________
tf.math.multiply_11 (TFOpLambda (None, 1, 1, 6)      0           conv2d_13[0][0]
                                                                 tf.math.sigmoid_14[0][0]
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 1, 1, 144)    1008        tf.math.multiply_11[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_15 (TFOpLambda) (None, 1, 1, 144)    0           conv2d_14[0][0]
__________________________________________________________________________________________________
multiply_3 (Multiply)           (None, 14, 14, 144)  0           tf.math.multiply_10[0][0]
                                                                 tf.math.sigmoid_15[0][0]
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 14, 14, 40)   5760        multiply_3[0][0]
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 14, 14, 40)   160         conv2d_15[0][0]
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 14, 14, 240)  9600        batch_normalization_11[0][0]
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 14, 14, 240)  960         conv2d_16[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_16 (TFOpLambda) (None, 14, 14, 240)  0           batch_normalization_12[0][0]
__________________________________________________________________________________________________
tf.math.multiply_12 (TFOpLambda (None, 14, 14, 240)  0           batch_normalization_12[0][0]
                                                                 tf.math.sigmoid_16[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_4 (DepthwiseCo (None, 7, 7, 240)    6000        tf.math.multiply_12[0][0]
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 7, 7, 240)    960         depthwise_conv2d_4[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_17 (TFOpLambda) (None, 7, 7, 240)    0           batch_normalization_13[0][0]
__________________________________________________________________________________________________
tf.math.multiply_13 (TFOpLambda (None, 7, 7, 240)    0           batch_normalization_13[0][0]
                                                                 tf.math.sigmoid_17[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_4 (Glo (None, 240)          0           tf.math.multiply_13[0][0]
__________________________________________________________________________________________________
reshape_4 (Reshape)             (None, 1, 1, 240)    0           global_average_pooling2d_4[0][0]
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 1, 1, 10)     2410        reshape_4[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_18 (TFOpLambda) (None, 1, 1, 10)     0           conv2d_17[0][0]
__________________________________________________________________________________________________
tf.math.multiply_14 (TFOpLambda (None, 1, 1, 10)     0           conv2d_17[0][0]
                                                                 tf.math.sigmoid_18[0][0]
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 1, 1, 240)    2640        tf.math.multiply_14[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_19 (TFOpLambda) (None, 1, 1, 240)    0           conv2d_18[0][0]
__________________________________________________________________________________________________
multiply_4 (Multiply)           (None, 7, 7, 240)    0           tf.math.multiply_13[0][0]
                                                                 tf.math.sigmoid_19[0][0]
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 7, 7, 40)     9600        multiply_4[0][0]
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 7, 7, 40)     160         conv2d_19[0][0]
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 7, 7, 240)    9600        batch_normalization_14[0][0]
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 7, 7, 240)    960         conv2d_20[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_20 (TFOpLambda) (None, 7, 7, 240)    0           batch_normalization_15[0][0]
__________________________________________________________________________________________________
tf.math.multiply_15 (TFOpLambda (None, 7, 7, 240)    0           batch_normalization_15[0][0]
                                                                 tf.math.sigmoid_20[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_5 (DepthwiseCo (None, 4, 4, 240)    2160        tf.math.multiply_15[0][0]
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 4, 4, 240)    960         depthwise_conv2d_5[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_21 (TFOpLambda) (None, 4, 4, 240)    0           batch_normalization_16[0][0]
__________________________________________________________________________________________________
tf.math.multiply_16 (TFOpLambda (None, 4, 4, 240)    0           batch_normalization_16[0][0]
                                                                 tf.math.sigmoid_21[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_5 (Glo (None, 240)          0           tf.math.multiply_16[0][0]
__________________________________________________________________________________________________
reshape_5 (Reshape)             (None, 1, 1, 240)    0           global_average_pooling2d_5[0][0]
__________________________________________________________________________________________________
conv2d_21 (Conv2D)              (None, 1, 1, 10)     2410        reshape_5[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_22 (TFOpLambda) (None, 1, 1, 10)     0           conv2d_21[0][0]
__________________________________________________________________________________________________
tf.math.multiply_17 (TFOpLambda (None, 1, 1, 10)     0           conv2d_21[0][0]
                                                                 tf.math.sigmoid_22[0][0]
__________________________________________________________________________________________________
conv2d_22 (Conv2D)              (None, 1, 1, 240)    2640        tf.math.multiply_17[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_23 (TFOpLambda) (None, 1, 1, 240)    0           conv2d_22[0][0]
__________________________________________________________________________________________________
multiply_5 (Multiply)           (None, 4, 4, 240)    0           tf.math.multiply_16[0][0]
                                                                 tf.math.sigmoid_23[0][0]
__________________________________________________________________________________________________
conv2d_23 (Conv2D)              (None, 4, 4, 80)     19200       multiply_5[0][0]
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 4, 4, 80)     320         conv2d_23[0][0]
__________________________________________________________________________________________________
conv2d_24 (Conv2D)              (None, 4, 4, 480)    38400       batch_normalization_17[0][0]
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 4, 4, 480)    1920        conv2d_24[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_24 (TFOpLambda) (None, 4, 4, 480)    0           batch_normalization_18[0][0]
__________________________________________________________________________________________________
tf.math.multiply_18 (TFOpLambda (None, 4, 4, 480)    0           batch_normalization_18[0][0]
                                                                 tf.math.sigmoid_24[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_6 (DepthwiseCo (None, 2, 2, 480)    4320        tf.math.multiply_18[0][0]
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 2, 2, 480)    1920        depthwise_conv2d_6[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_25 (TFOpLambda) (None, 2, 2, 480)    0           batch_normalization_19[0][0]
__________________________________________________________________________________________________
tf.math.multiply_19 (TFOpLambda (None, 2, 2, 480)    0           batch_normalization_19[0][0]
                                                                 tf.math.sigmoid_25[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_6 (Glo (None, 480)          0           tf.math.multiply_19[0][0]
__________________________________________________________________________________________________
reshape_6 (Reshape)             (None, 1, 1, 480)    0           global_average_pooling2d_6[0][0]
__________________________________________________________________________________________________
conv2d_25 (Conv2D)              (None, 1, 1, 20)     9620        reshape_6[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_26 (TFOpLambda) (None, 1, 1, 20)     0           conv2d_25[0][0]
__________________________________________________________________________________________________
tf.math.multiply_20 (TFOpLambda (None, 1, 1, 20)     0           conv2d_25[0][0]
                                                                 tf.math.sigmoid_26[0][0]
__________________________________________________________________________________________________
conv2d_26 (Conv2D)              (None, 1, 1, 480)    10080       tf.math.multiply_20[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_27 (TFOpLambda) (None, 1, 1, 480)    0           conv2d_26[0][0]
__________________________________________________________________________________________________
multiply_6 (Multiply)           (None, 2, 2, 480)    0           tf.math.multiply_19[0][0]
                                                                 tf.math.sigmoid_27[0][0]
__________________________________________________________________________________________________
conv2d_27 (Conv2D)              (None, 2, 2, 80)     38400       multiply_6[0][0]
__________________________________________________________________________________________________
batch_normalization_20 (BatchNo (None, 2, 2, 80)     320         conv2d_27[0][0]
__________________________________________________________________________________________________
conv2d_28 (Conv2D)              (None, 2, 2, 480)    38400       batch_normalization_20[0][0]
__________________________________________________________________________________________________
batch_normalization_21 (BatchNo (None, 2, 2, 480)    1920        conv2d_28[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_28 (TFOpLambda) (None, 2, 2, 480)    0           batch_normalization_21[0][0]
__________________________________________________________________________________________________
tf.math.multiply_21 (TFOpLambda (None, 2, 2, 480)    0           batch_normalization_21[0][0]
                                                                 tf.math.sigmoid_28[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_7 (DepthwiseCo (None, 1, 1, 480)    4320        tf.math.multiply_21[0][0]
__________________________________________________________________________________________________
batch_normalization_22 (BatchNo (None, 1, 1, 480)    1920        depthwise_conv2d_7[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_29 (TFOpLambda) (None, 1, 1, 480)    0           batch_normalization_22[0][0]
__________________________________________________________________________________________________
tf.math.multiply_22 (TFOpLambda (None, 1, 1, 480)    0           batch_normalization_22[0][0]
                                                                 tf.math.sigmoid_29[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_7 (Glo (None, 480)          0           tf.math.multiply_22[0][0]
__________________________________________________________________________________________________
reshape_7 (Reshape)             (None, 1, 1, 480)    0           global_average_pooling2d_7[0][0]
__________________________________________________________________________________________________
conv2d_29 (Conv2D)              (None, 1, 1, 20)     9620        reshape_7[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_30 (TFOpLambda) (None, 1, 1, 20)     0           conv2d_29[0][0]
__________________________________________________________________________________________________
tf.math.multiply_23 (TFOpLambda (None, 1, 1, 20)     0           conv2d_29[0][0]
                                                                 tf.math.sigmoid_30[0][0]
__________________________________________________________________________________________________
conv2d_30 (Conv2D)              (None, 1, 1, 480)    10080       tf.math.multiply_23[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_31 (TFOpLambda) (None, 1, 1, 480)    0           conv2d_30[0][0]
__________________________________________________________________________________________________
multiply_7 (Multiply)           (None, 1, 1, 480)    0           tf.math.multiply_22[0][0]
                                                                 tf.math.sigmoid_31[0][0]
__________________________________________________________________________________________________
conv2d_31 (Conv2D)              (None, 1, 1, 80)     38400       multiply_7[0][0]
__________________________________________________________________________________________________
batch_normalization_23 (BatchNo (None, 1, 1, 80)     320         conv2d_31[0][0]
__________________________________________________________________________________________________
conv2d_32 (Conv2D)              (None, 1, 1, 480)    38400       batch_normalization_23[0][0]
__________________________________________________________________________________________________
batch_normalization_24 (BatchNo (None, 1, 1, 480)    1920        conv2d_32[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_32 (TFOpLambda) (None, 1, 1, 480)    0           batch_normalization_24[0][0]
__________________________________________________________________________________________________
tf.math.multiply_24 (TFOpLambda (None, 1, 1, 480)    0           batch_normalization_24[0][0]
                                                                 tf.math.sigmoid_32[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_8 (DepthwiseCo (None, 1, 1, 480)    12000       tf.math.multiply_24[0][0]
__________________________________________________________________________________________________
batch_normalization_25 (BatchNo (None, 1, 1, 480)    1920        depthwise_conv2d_8[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_33 (TFOpLambda) (None, 1, 1, 480)    0           batch_normalization_25[0][0]
__________________________________________________________________________________________________
tf.math.multiply_25 (TFOpLambda (None, 1, 1, 480)    0           batch_normalization_25[0][0]
                                                                 tf.math.sigmoid_33[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_8 (Glo (None, 480)          0           tf.math.multiply_25[0][0]
__________________________________________________________________________________________________
reshape_8 (Reshape)             (None, 1, 1, 480)    0           global_average_pooling2d_8[0][0]
__________________________________________________________________________________________________
conv2d_33 (Conv2D)              (None, 1, 1, 20)     9620        reshape_8[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_34 (TFOpLambda) (None, 1, 1, 20)     0           conv2d_33[0][0]
__________________________________________________________________________________________________
tf.math.multiply_26 (TFOpLambda (None, 1, 1, 20)     0           conv2d_33[0][0]
                                                                 tf.math.sigmoid_34[0][0]
__________________________________________________________________________________________________
conv2d_34 (Conv2D)              (None, 1, 1, 480)    10080       tf.math.multiply_26[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_35 (TFOpLambda) (None, 1, 1, 480)    0           conv2d_34[0][0]
__________________________________________________________________________________________________
multiply_8 (Multiply)           (None, 1, 1, 480)    0           tf.math.multiply_25[0][0]
                                                                 tf.math.sigmoid_35[0][0]
__________________________________________________________________________________________________
conv2d_35 (Conv2D)              (None, 1, 1, 112)    53760       multiply_8[0][0]
__________________________________________________________________________________________________
batch_normalization_26 (BatchNo (None, 1, 1, 112)    448         conv2d_35[0][0]
__________________________________________________________________________________________________
conv2d_36 (Conv2D)              (None, 1, 1, 672)    75264       batch_normalization_26[0][0]
__________________________________________________________________________________________________
batch_normalization_27 (BatchNo (None, 1, 1, 672)    2688        conv2d_36[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_36 (TFOpLambda) (None, 1, 1, 672)    0           batch_normalization_27[0][0]
__________________________________________________________________________________________________
tf.math.multiply_27 (TFOpLambda (None, 1, 1, 672)    0           batch_normalization_27[0][0]
                                                                 tf.math.sigmoid_36[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_9 (DepthwiseCo (None, 1, 1, 672)    16800       tf.math.multiply_27[0][0]
__________________________________________________________________________________________________
batch_normalization_28 (BatchNo (None, 1, 1, 672)    2688        depthwise_conv2d_9[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_37 (TFOpLambda) (None, 1, 1, 672)    0           batch_normalization_28[0][0]
__________________________________________________________________________________________________
tf.math.multiply_28 (TFOpLambda (None, 1, 1, 672)    0           batch_normalization_28[0][0]
                                                                 tf.math.sigmoid_37[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_9 (Glo (None, 672)          0           tf.math.multiply_28[0][0]
__________________________________________________________________________________________________
reshape_9 (Reshape)             (None, 1, 1, 672)    0           global_average_pooling2d_9[0][0]
__________________________________________________________________________________________________
conv2d_37 (Conv2D)              (None, 1, 1, 28)     18844       reshape_9[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_38 (TFOpLambda) (None, 1, 1, 28)     0           conv2d_37[0][0]
__________________________________________________________________________________________________
tf.math.multiply_29 (TFOpLambda (None, 1, 1, 28)     0           conv2d_37[0][0]
                                                                 tf.math.sigmoid_38[0][0]
__________________________________________________________________________________________________
conv2d_38 (Conv2D)              (None, 1, 1, 672)    19488       tf.math.multiply_29[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_39 (TFOpLambda) (None, 1, 1, 672)    0           conv2d_38[0][0]
__________________________________________________________________________________________________
multiply_9 (Multiply)           (None, 1, 1, 672)    0           tf.math.multiply_28[0][0]
                                                                 tf.math.sigmoid_39[0][0]
__________________________________________________________________________________________________
conv2d_39 (Conv2D)              (None, 1, 1, 112)    75264       multiply_9[0][0]
__________________________________________________________________________________________________
batch_normalization_29 (BatchNo (None, 1, 1, 112)    448         conv2d_39[0][0]
__________________________________________________________________________________________________
conv2d_40 (Conv2D)              (None, 1, 1, 672)    75264       batch_normalization_29[0][0]
__________________________________________________________________________________________________
batch_normalization_30 (BatchNo (None, 1, 1, 672)    2688        conv2d_40[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_40 (TFOpLambda) (None, 1, 1, 672)    0           batch_normalization_30[0][0]
__________________________________________________________________________________________________
tf.math.multiply_30 (TFOpLambda (None, 1, 1, 672)    0           batch_normalization_30[0][0]
                                                                 tf.math.sigmoid_40[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_10 (DepthwiseC (None, 1, 1, 672)    16800       tf.math.multiply_30[0][0]
__________________________________________________________________________________________________
batch_normalization_31 (BatchNo (None, 1, 1, 672)    2688        depthwise_conv2d_10[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_41 (TFOpLambda) (None, 1, 1, 672)    0           batch_normalization_31[0][0]
__________________________________________________________________________________________________
tf.math.multiply_31 (TFOpLambda (None, 1, 1, 672)    0           batch_normalization_31[0][0]
                                                                 tf.math.sigmoid_41[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_10 (Gl (None, 672)          0           tf.math.multiply_31[0][0]
__________________________________________________________________________________________________
reshape_10 (Reshape)            (None, 1, 1, 672)    0           global_average_pooling2d_10[0][0]
__________________________________________________________________________________________________
conv2d_41 (Conv2D)              (None, 1, 1, 28)     18844       reshape_10[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_42 (TFOpLambda) (None, 1, 1, 28)     0           conv2d_41[0][0]
__________________________________________________________________________________________________
tf.math.multiply_32 (TFOpLambda (None, 1, 1, 28)     0           conv2d_41[0][0]
                                                                 tf.math.sigmoid_42[0][0]
__________________________________________________________________________________________________
conv2d_42 (Conv2D)              (None, 1, 1, 672)    19488       tf.math.multiply_32[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_43 (TFOpLambda) (None, 1, 1, 672)    0           conv2d_42[0][0]
__________________________________________________________________________________________________
multiply_10 (Multiply)          (None, 1, 1, 672)    0           tf.math.multiply_31[0][0]
                                                                 tf.math.sigmoid_43[0][0]
__________________________________________________________________________________________________
conv2d_43 (Conv2D)              (None, 1, 1, 112)    75264       multiply_10[0][0]
__________________________________________________________________________________________________
batch_normalization_32 (BatchNo (None, 1, 1, 112)    448         conv2d_43[0][0]
__________________________________________________________________________________________________
conv2d_44 (Conv2D)              (None, 1, 1, 672)    75264       batch_normalization_32[0][0]
__________________________________________________________________________________________________
batch_normalization_33 (BatchNo (None, 1, 1, 672)    2688        conv2d_44[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_44 (TFOpLambda) (None, 1, 1, 672)    0           batch_normalization_33[0][0]
__________________________________________________________________________________________________
tf.math.multiply_33 (TFOpLambda (None, 1, 1, 672)    0           batch_normalization_33[0][0]
                                                                 tf.math.sigmoid_44[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_11 (DepthwiseC (None, 1, 1, 672)    16800       tf.math.multiply_33[0][0]
__________________________________________________________________________________________________
batch_normalization_34 (BatchNo (None, 1, 1, 672)    2688        depthwise_conv2d_11[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_45 (TFOpLambda) (None, 1, 1, 672)    0           batch_normalization_34[0][0]
__________________________________________________________________________________________________
tf.math.multiply_34 (TFOpLambda (None, 1, 1, 672)    0           batch_normalization_34[0][0]
                                                                 tf.math.sigmoid_45[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_11 (Gl (None, 672)          0           tf.math.multiply_34[0][0]
__________________________________________________________________________________________________
reshape_11 (Reshape)            (None, 1, 1, 672)    0           global_average_pooling2d_11[0][0]
__________________________________________________________________________________________________
conv2d_45 (Conv2D)              (None, 1, 1, 28)     18844       reshape_11[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_46 (TFOpLambda) (None, 1, 1, 28)     0           conv2d_45[0][0]
__________________________________________________________________________________________________
tf.math.multiply_35 (TFOpLambda (None, 1, 1, 28)     0           conv2d_45[0][0]
                                                                 tf.math.sigmoid_46[0][0]
__________________________________________________________________________________________________
conv2d_46 (Conv2D)              (None, 1, 1, 672)    19488       tf.math.multiply_35[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_47 (TFOpLambda) (None, 1, 1, 672)    0           conv2d_46[0][0]
__________________________________________________________________________________________________
multiply_11 (Multiply)          (None, 1, 1, 672)    0           tf.math.multiply_34[0][0]
                                                                 tf.math.sigmoid_47[0][0]
__________________________________________________________________________________________________
conv2d_47 (Conv2D)              (None, 1, 1, 192)    129024      multiply_11[0][0]
__________________________________________________________________________________________________
batch_normalization_35 (BatchNo (None, 1, 1, 192)    768         conv2d_47[0][0]
__________________________________________________________________________________________________
conv2d_48 (Conv2D)              (None, 1, 1, 1152)   221184      batch_normalization_35[0][0]
__________________________________________________________________________________________________
batch_normalization_36 (BatchNo (None, 1, 1, 1152)   4608        conv2d_48[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_48 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_36[0][0]
__________________________________________________________________________________________________
tf.math.multiply_36 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_36[0][0]
                                                                 tf.math.sigmoid_48[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_12 (DepthwiseC (None, 1, 1, 1152)   28800       tf.math.multiply_36[0][0]
__________________________________________________________________________________________________
batch_normalization_37 (BatchNo (None, 1, 1, 1152)   4608        depthwise_conv2d_12[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_49 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_37[0][0]
__________________________________________________________________________________________________
tf.math.multiply_37 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_37[0][0]
                                                                 tf.math.sigmoid_49[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_12 (Gl (None, 1152)         0           tf.math.multiply_37[0][0]
__________________________________________________________________________________________________
reshape_12 (Reshape)            (None, 1, 1, 1152)   0           global_average_pooling2d_12[0][0]
__________________________________________________________________________________________________
conv2d_49 (Conv2D)              (None, 1, 1, 48)     55344       reshape_12[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_50 (TFOpLambda) (None, 1, 1, 48)     0           conv2d_49[0][0]
__________________________________________________________________________________________________
tf.math.multiply_38 (TFOpLambda (None, 1, 1, 48)     0           conv2d_49[0][0]
                                                                 tf.math.sigmoid_50[0][0]
__________________________________________________________________________________________________
conv2d_50 (Conv2D)              (None, 1, 1, 1152)   56448       tf.math.multiply_38[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_51 (TFOpLambda) (None, 1, 1, 1152)   0           conv2d_50[0][0]
__________________________________________________________________________________________________
multiply_12 (Multiply)          (None, 1, 1, 1152)   0           tf.math.multiply_37[0][0]
                                                                 tf.math.sigmoid_51[0][0]
__________________________________________________________________________________________________
conv2d_51 (Conv2D)              (None, 1, 1, 192)    221184      multiply_12[0][0]
__________________________________________________________________________________________________
batch_normalization_38 (BatchNo (None, 1, 1, 192)    768         conv2d_51[0][0]
__________________________________________________________________________________________________
conv2d_52 (Conv2D)              (None, 1, 1, 1152)   221184      batch_normalization_38[0][0]
__________________________________________________________________________________________________
batch_normalization_39 (BatchNo (None, 1, 1, 1152)   4608        conv2d_52[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_52 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_39[0][0]
__________________________________________________________________________________________________
tf.math.multiply_39 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_39[0][0]
                                                                 tf.math.sigmoid_52[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_13 (DepthwiseC (None, 1, 1, 1152)   28800       tf.math.multiply_39[0][0]
__________________________________________________________________________________________________
batch_normalization_40 (BatchNo (None, 1, 1, 1152)   4608        depthwise_conv2d_13[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_53 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_40[0][0]
__________________________________________________________________________________________________
tf.math.multiply_40 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_40[0][0]
                                                                 tf.math.sigmoid_53[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_13 (Gl (None, 1152)         0           tf.math.multiply_40[0][0]
__________________________________________________________________________________________________
reshape_13 (Reshape)            (None, 1, 1, 1152)   0           global_average_pooling2d_13[0][0]
__________________________________________________________________________________________________
conv2d_53 (Conv2D)              (None, 1, 1, 48)     55344       reshape_13[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_54 (TFOpLambda) (None, 1, 1, 48)     0           conv2d_53[0][0]
__________________________________________________________________________________________________
tf.math.multiply_41 (TFOpLambda (None, 1, 1, 48)     0           conv2d_53[0][0]
                                                                 tf.math.sigmoid_54[0][0]
__________________________________________________________________________________________________
conv2d_54 (Conv2D)              (None, 1, 1, 1152)   56448       tf.math.multiply_41[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_55 (TFOpLambda) (None, 1, 1, 1152)   0           conv2d_54[0][0]
__________________________________________________________________________________________________
multiply_13 (Multiply)          (None, 1, 1, 1152)   0           tf.math.multiply_40[0][0]
                                                                 tf.math.sigmoid_55[0][0]
__________________________________________________________________________________________________
conv2d_55 (Conv2D)              (None, 1, 1, 192)    221184      multiply_13[0][0]
__________________________________________________________________________________________________
batch_normalization_41 (BatchNo (None, 1, 1, 192)    768         conv2d_55[0][0]
__________________________________________________________________________________________________
conv2d_56 (Conv2D)              (None, 1, 1, 1152)   221184      batch_normalization_41[0][0]
__________________________________________________________________________________________________
batch_normalization_42 (BatchNo (None, 1, 1, 1152)   4608        conv2d_56[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_56 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_42[0][0]
__________________________________________________________________________________________________
tf.math.multiply_42 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_42[0][0]
                                                                 tf.math.sigmoid_56[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_14 (DepthwiseC (None, 1, 1, 1152)   28800       tf.math.multiply_42[0][0]
__________________________________________________________________________________________________
batch_normalization_43 (BatchNo (None, 1, 1, 1152)   4608        depthwise_conv2d_14[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_57 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_43[0][0]
__________________________________________________________________________________________________
tf.math.multiply_43 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_43[0][0]
                                                                 tf.math.sigmoid_57[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_14 (Gl (None, 1152)         0           tf.math.multiply_43[0][0]
__________________________________________________________________________________________________
reshape_14 (Reshape)            (None, 1, 1, 1152)   0           global_average_pooling2d_14[0][0]
__________________________________________________________________________________________________
conv2d_57 (Conv2D)              (None, 1, 1, 48)     55344       reshape_14[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_58 (TFOpLambda) (None, 1, 1, 48)     0           conv2d_57[0][0]
__________________________________________________________________________________________________
tf.math.multiply_44 (TFOpLambda (None, 1, 1, 48)     0           conv2d_57[0][0]
                                                                 tf.math.sigmoid_58[0][0]
__________________________________________________________________________________________________
conv2d_58 (Conv2D)              (None, 1, 1, 1152)   56448       tf.math.multiply_44[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_59 (TFOpLambda) (None, 1, 1, 1152)   0           conv2d_58[0][0]
__________________________________________________________________________________________________
multiply_14 (Multiply)          (None, 1, 1, 1152)   0           tf.math.multiply_43[0][0]
                                                                 tf.math.sigmoid_59[0][0]
__________________________________________________________________________________________________
conv2d_59 (Conv2D)              (None, 1, 1, 192)    221184      multiply_14[0][0]
__________________________________________________________________________________________________
batch_normalization_44 (BatchNo (None, 1, 1, 192)    768         conv2d_59[0][0]
__________________________________________________________________________________________________
conv2d_60 (Conv2D)              (None, 1, 1, 1152)   221184      batch_normalization_44[0][0]
__________________________________________________________________________________________________
batch_normalization_45 (BatchNo (None, 1, 1, 1152)   4608        conv2d_60[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_60 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_45[0][0]
__________________________________________________________________________________________________
tf.math.multiply_45 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_45[0][0]
                                                                 tf.math.sigmoid_60[0][0]
__________________________________________________________________________________________________
depthwise_conv2d_15 (DepthwiseC (None, 1, 1, 1152)   10368       tf.math.multiply_45[0][0]
__________________________________________________________________________________________________
batch_normalization_46 (BatchNo (None, 1, 1, 1152)   4608        depthwise_conv2d_15[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_61 (TFOpLambda) (None, 1, 1, 1152)   0           batch_normalization_46[0][0]
__________________________________________________________________________________________________
tf.math.multiply_46 (TFOpLambda (None, 1, 1, 1152)   0           batch_normalization_46[0][0]
                                                                 tf.math.sigmoid_61[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_15 (Gl (None, 1152)         0           tf.math.multiply_46[0][0]
__________________________________________________________________________________________________
reshape_15 (Reshape)            (None, 1, 1, 1152)   0           global_average_pooling2d_15[0][0]
__________________________________________________________________________________________________
conv2d_61 (Conv2D)              (None, 1, 1, 48)     55344       reshape_15[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_62 (TFOpLambda) (None, 1, 1, 48)     0           conv2d_61[0][0]
__________________________________________________________________________________________________
tf.math.multiply_47 (TFOpLambda (None, 1, 1, 48)     0           conv2d_61[0][0]
                                                                 tf.math.sigmoid_62[0][0]
__________________________________________________________________________________________________
conv2d_62 (Conv2D)              (None, 1, 1, 1152)   56448       tf.math.multiply_47[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_63 (TFOpLambda) (None, 1, 1, 1152)   0           conv2d_62[0][0]
__________________________________________________________________________________________________
multiply_15 (Multiply)          (None, 1, 1, 1152)   0           tf.math.multiply_46[0][0]
                                                                 tf.math.sigmoid_63[0][0]
__________________________________________________________________________________________________
conv2d_63 (Conv2D)              (None, 1, 1, 320)    368640      multiply_15[0][0]
__________________________________________________________________________________________________
batch_normalization_47 (BatchNo (None, 1, 1, 320)    1280        conv2d_63[0][0]
__________________________________________________________________________________________________
conv2d_64 (Conv2D)              (None, 1, 1, 1280)   409600      batch_normalization_47[0][0]
__________________________________________________________________________________________________
batch_normalization_48 (BatchNo (None, 1, 1, 1280)   5120        conv2d_64[0][0]
__________________________________________________________________________________________________
tf.math.sigmoid_64 (TFOpLambda) (None, 1, 1, 1280)   0           batch_normalization_48[0][0]
__________________________________________________________________________________________________
tf.math.multiply_48 (TFOpLambda (None, 1, 1, 1280)   0           batch_normalization_48[0][0]
                                                                 tf.math.sigmoid_64[0][0]
__________________________________________________________________________________________________
global_average_pooling2d_16 (Gl (None, 1280)         0           tf.math.multiply_48[0][0]
__________________________________________________________________________________________________
dropout (Dropout)               (None, 1280)         0           global_average_pooling2d_16[0][0]
__________________________________________________________________________________________________
dense (Dense)                   (None, 1000)         1281000     dropout[0][0]
==================================================================================================
Total params: 5,330,564
Trainable params: 5,288,548
Non-trainable params: 42,016
__________________________________________________________________________________________________

Original: https://blog.csdn.net/dgvv4/article/details/123553351
Author: 立Sir
Title: 【神经网络】(17) EfficientNet 代码复现,网络解析,附Tensorflow完整代码

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/521268/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球