ResNext

实例化ResNeXt架构用于CIFAR-10数据集

def ResNext(input_shape=None, depth=29, cardinality=8, width=64, weight_decay=5e-4,
            include_top=True, weights=None, input_tensor=None,
            pooling=None, classes=10):

参数分析

  • depth:ResNeXt模型中的数量或层数。可以是整数或整数列表。

  • include_top:是否包含最上层的全连接层

  • weights: None/ imagenet / path (to the weight file)
    None表示没有指定权重,对网络参数进行随机初始化.
    imagenet 表示加载imagenet与训练的网络权重.
    path 表示指向权重文件的路径.

  • input_tensor: 可选的Keras张量(即layers.Input()的输出)作为模型的图像输入

  • pooling:当include_topFalse时,用于特征提取的可选池模式。
    None表示模型的输出将是最后一个卷积层的4D张量输出。
    avg意味着将对最后一个卷积层的输出应用全局平均池,因此模型的输出将是一个2D张量
    max表示将应用全局最大池。

  • cardinality:基数,变换集合的大小

  • classes:分类图像的可选类数,只有在include_top为真值且没有指定weights参数时才指定

这一段就是在确认权重的方式,要么是None-随机初始化参数;或者从预训练CIFAR-10的路径迁移学习里面的权重。

    if weights not in {'cifar10', None}:
        raise ValueError('The `weights` argument should be either '
                         '`None` (random initialization) or `cifar10` '
                         '(pre-training on CIFAR-10).')

如果权重取的cifar10则include_top必须=true且claasses=10

 if weights == 'cifar10' and include_top and classes != 10:
        raise ValueError('If using `weights` as CIFAR 10 with `include_top`'
                         ' as true, `classes` should be 10')

这个点不太明白。。。。可能跟Resnext网络结构有一定关系

    if type(depth) == int:
        if (depth - 2) % 9 != 0:
            raise ValueError('Depth of the network must be such that (depth - 2)'
                             'should be divisible by 9.')

相当于前面几个if都是确定网络的输入/结构/定义有没有错误的,一个预检查之类的东东

确保正确的输入形状

# Determine proper input shape
    input_shape = _obtain_input_shape(input_shape,
                                      default_size=32,
                                      min_size=8,
                                      data_format=K.image_data_format(),
                                      require_flatten=include_top)

输入层

这一段代码就是确认输入的形式为shape或者keras所认定的形式

    if input_tensor is None:
        img_input = Input(shape=input_shape)
    else:
        if not K.is_keras_tensor(input_tensor):
            img_input = Input(tensor=input_tensor, shape=input_shape)
        else:
            img_input = input_tensor

    x = __create_res_next(classes, img_input, include_top, depth, cardinality, width,
                          weight_decay, pooling)

 # Ensure that the model takes into account
    # any potential predecessors of `input_tensor`.
    if input_tensor is not None:
        inputs = get_source_inputs(input_tensor)#
    else:
        inputs = img_input
    # Create model.
    model = Model(inputs, x, name='resnext')

get_source_inputs返回计算张量所需的输入张量的列表。输出总是一个张量列表(可能有一个元素)。
def get_source_inputs(tensor, layer=None, node_index=None):

Returns the list of input tensors necessary to compute tensor.

Output will always be a list of tensors (potentially with 1 element).

Arguments

tensor: The tensor to start from.

layer: Origin layer of the tensor. Will be determined via tensor._keras_history if not provided.

node_index: Origin node index of the tensor.

Returns List of input tensors.

model = Model(inputs, x, name='resnext')
模型建立完成

下载权重

代码里不清楚的点,单拎出来看看

K.image_data_format() == ‘channels_first’

  • 彩色图像一般会有Width, Height, Channel ,'channel_first’则代表数据的通道维的位置。
  • Caffe/Theano 使用的数据格式是channels_first即(样本数,通道数,行数(高),列数(宽));
  • Tensforflow 使用的数据格式是channels_last即:样本数,行数(高),列数(宽),通道数)

keras自带的下载工具get_file

  • fname: 下载后你想把这个文件保存成什么名字?
  • origin: 下载的地址链接
  • cache_subdir: 模型保存在哪个文件夹下?
  • md5_hash:将被弃用,验证值,用于验证已经下载的文件时否是需要的格式,是否是最新版本,是否有损坏等
  • 返回值:下载后的文件的绝对地址
  • 函数功能: 会先检查文件夹根目录.keras/cache_subdir下是否存在文件fname, 若不存在,就根据网址origin下载,下载后的文件存储在
  • .keras/cache_subdir下面,若文件已经存在,就不再下载,直接返回文件地址.

CIFAR-10

  • 是一个包含60000张图片的数据集。其中每张照片为32*32的彩色照片,每个像素点包括RGB三个数值,数值范围 0 ~ 255。
  • 所有照片分属10个不同的类别,分别是 ‘airplane’, ‘automobile’, ‘bird’, ‘cat’, ‘deer’, ‘dog’, ‘frog’, ‘horse’, ‘ship’, ‘truck’
  • 其中五万张图片被划分为训练集,剩下的一万张图片属于测试集

convert_all_kernels_in_model:将模型中全部卷积核在theano和tensorflow中切换

下面这个版本的keras笔记真的好全,大家可以参考一下
keras笔记

下面就是下载权重(这是在weights=cifar10的时候需要用到的,感觉这一段应该放在前面的),因为定义的K.image_data_format() == 'channels_first’所以用theano是能使性能更好,如果使用tensorflow可能性能不是最佳的,程序会有一个警告,但也会运行。

    if weights == 'cifar10':
        if (depth == 29) and (cardinality == 8) and (width == 64):
            # Default parameters match. Weights for this model exist:

            if K.image_data_format() == 'channels_first':
                if include_top:
                    weights_path = get_file('resnext_cifar_10_8_64_th_dim_ordering_th_kernels.h5',
                                            CIFAR_TH_WEIGHTS_PATH,
                                            cache_subdir='models')
                else:
                    weights_path = get_file('resnext_cifar_10_8_64_th_dim_ordering_th_kernels_no_top.h5',
                                            CIFAR_TH_WEIGHTS_PATH_NO_TOP,
                                            cache_subdir='models')

                model.load_weights(weights_path)

                if K.backend() == 'tensorflow':
                    warnings.warn('You are using the TensorFlow backend, yet you '
                                  'are using the Theano '
                                  'image dimension ordering convention '
                                  '(`image_dim_ordering="th"`). '
                                  'For best performance, set '
                                  '`image_dim_ordering="tf"` in '
                                  'your Keras config '
                                  'at ~/.keras/keras.json.')
                    convert_all_kernels_in_model(model)
            else:
                if include_top:
                    weights_path = get_file('resnext_cifar_10_8_64_tf_dim_ordering_tf_kernels.h5',
                                            CIFAR_TF_WEIGHTS_PATH,
                                            cache_subdir='models')
                else:
                    weights_path = get_file('resnext_cifar_10_8_64_tf_dim_ordering_tf_kernels_no_top.h5',
                                            CIFAR_TF_WEIGHTS_PATH_NO_TOP,
                                            cache_subdir='models')

                model.load_weights(weights_path)

                if K.backend() == 'theano':
                    convert_all_kernels_in_model(model)

    return model

ImageNet数据集实例化ResNeXt架构

def ResNextImageNet(input_shape=None, depth=[3, 4, 6, 3], cardinality=32, width=4, weight_decay=5e-4,
                    include_top=True, weights=None, input_tensor=None,
                    pooling=None, classes=1000):

参数详解

  • depth:每个块中的数量或层数,定义为一个列表。
    ResNeXt-50 can be defined as [3, 4, 6, 3].
    ResNeXt-101 can be defined as [3, 4, 23, 3].
  • width:到ResNeXt宽度的乘法器(过滤器数量)
  • weight_decay权重衰减(l2范数)
  • cardinality(基数):转换集合的大小
  • include_top:是否包含网络顶部的完全连接层。
  • weights: None(随机初始化)或 imagenet(训练 ImageNet)
  • input_tensor:可选的Keras张量(即layers.Input()的输出),用于作为模型的图像输入。
  • input_shape:可选的形状元组,只有在’ include_topFalse时才会指定(否则输入形状必须是(224,224,3)(带有tf维度排序)或(3,224,224)(带有th维度排序)。它应该恰好有3个输入通道,宽度和高度应该不小于8。如。(200,200,3)是一个有效值。
  • pooling:当include_topFalse时,用于特征提取的可选池模式。
    None表示模型的输出将是最后一个卷积层的4D张量输出。
    max表示将应用全局最大池。
    avg意味着将对最后一个卷积层的输出应用全局平均pooling,因此模型的输出将是一个2D张量。
  • classes:可选的图像分类类的数目,只有在include_top为True且没有指定weights参数时才指定。

这一段代码就和cifar10的一模一样,作用也是一样的。

 if weights not in {'imagenet', None}:# # 检查weight与分类设置是否正确
        raise ValueError('The `weights` argument should be either '
                         '`None` (random initialization) or `imagenet` '
                         '(pre-training on ImageNet).')

    if weights == 'imagenet' and include_top and classes != 1000:
        raise ValueError('If using `weights` as imagenet with `include_top`'
                         ' as true, `classes` should be 1000')#这应该是因为imagenet数据集的规定--它就是有1000个类别啊

    if type(depth) == int and (depth - 2) % 9 != 0:
        raise ValueError('Depth of the network must be such that (depth - 2)'
                         'should be divisible by 9.')
# Determine proper input shape
    input_shape = _obtain_input_shape(input_shape,
                                      default_size=224,
                                      min_size=112,
                                      data_format=K.image_data_format(),
                                      require_flatten=include_top)                     
                         

这就是说如果input_tensor =None则使用shape将图片的宽、高、通道数读入。然后再用input()转换为keras的格式;
如果是tensor的数据格式,需要两步走:

  • 先判断是否是keras指定的数据类型,is_keras_tensor
  • 然后get_source_inputs(input_tensor)
    if input_tensor is None:
        img_input = Input(shape=input_shape)#shape()函数返回图片的高,宽以及通道数 # 这里的Input是keras的格式,可以用于转换
    else:#是tensor的数据格式
        if not K.is_keras_tensor(input_tensor):#判断是否是keras指定的数据类型
            img_input = Input(tensor=input_tensor, shape=input_shape)#不是则转换
        else:
            img_input = input_tensor#是keras指定的数据类型就不变

    x = __create_res_next_imagenet(classes, img_input, include_top, depth, cardinality, width,
                                   weight_decay, pooling)

 if input_tensor is not None:
        inputs = get_source_inputs(input_tensor)
    else:
        inputs = img_input
    # Create model.
    model = Model(inputs, x, name='resnext')

上面的if代码是判断输入的格式是不是keras的若现在还是使用tensor的形式可能使整个网络的性能不是最优,所以这些代码就是格式转换,将所有的格式转化为与keras所认定的数据格式.

下载权重

这部分和cifar的一样

# load weights
    if weights == 'imagenet':
        if (depth == [3, 4, 6, 3]) and (cardinality == 32) and (width == 4):
            # Default parameters match. Weights for this model exist:

            if K.image_data_format() == 'channels_first':
                if include_top:
                    weights_path = get_file('resnext_imagenet_32_4_th_dim_ordering_th_kernels.h5',
                                            IMAGENET_TH_WEIGHTS_PATH,
                                            cache_subdir='models')
                else:
                    weights_path = get_file('resnext_imagenet_32_4_th_dim_ordering_th_kernels_no_top.h5',
                                            IMAGENET_TH_WEIGHTS_PATH_NO_TOP,
                                            cache_subdir='models')

                model.load_weights(weights_path)

                if K.backend() == 'tensorflow':
                    warnings.warn('You are using the TensorFlow backend, yet you '
                                  'are using the Theano '
                                  'image dimension ordering convention '
                                  '(`image_dim_ordering="th"`). '
                                  'For best performance, set '
                                  '`image_dim_ordering="tf"` in '
                                  'your Keras config '
                                  'at ~/.keras/keras.json.')
                    convert_all_kernels_in_model(model)
            else:
                if include_top:
                    weights_path = get_file('resnext_imagenet_32_4_tf_dim_ordering_tf_kernels.h5',
                                            IMAGENET_TF_WEIGHTS_PATH,
                                            cache_subdir='models')
                else:
                    weights_path = get_file('resnext_imagenet_32_4_tf_dim_ordering_tf_kernels_no_top.h5',
                                            IMAGENET_TF_WEIGHTS_PATH_NO_TOP,
                                            cache_subdir='models')

                model.load_weights(weights_path)

                if K.backend() == 'theano':
                    convert_all_kernels_in_model(model)

    return model

层正式开始了~~

添加一个初始卷积块,带有批归一化和relu激活

def __initial_conv_block(input, weight_decay=5e-4):
    ''' Adds an initial convolution block, with batch normalization and relu activation
    Args:
        input: input tensor
        weight_decay: weight decay factor
    Returns: a keras tensor
    '''
    # 就是判断是不是channel_first,如果是则channel_axis = 1,否之=-1(就重最后一个元素为channel的轴,不就是channel_last)
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1

    x = Conv2D(64, (3, 3), padding='same', use_bias=False, kernel_initializer='he_normal',
               kernel_regularizer=l2(weight_decay))(input)#64是filters:卷积核的数目(即输出的维度)(33)卷积核的宽度和长度
    x = BatchNormalization(axis=channel_axis)(x)
    x = Activation('relu')(x)

    return x

参数详解

  • input: 输入张量
  • weight_decay:重量衰减因子
  • 返回:keras张量
  • padding:填充方式
    设置为same,则说明输入图片大小和输出图片大小是一致的,如果是valid则图片经过滤波器后可能会变小
  • use_bias:布尔值,是否使用偏置项
  • kernel_initializer:权值初始化方法,为预定义初始化方法名的字符串,或用于初始化权重的初始化器。参考initializers
  • kernel_regularizer:施加在权重上的正则项,为Regularizer对象

更多的参数可以戳下方
Keras中几个重要函数用法

添加一个初始的卷积块,带有批规范和relu的inception resnext

def __initial_conv_block_imagenet(input, weight_decay=5e-4):
    ''' Adds an initial conv block, with batch norm and relu for the inception resnext
    Args:
        input: input tensor
        weight_decay: weight decay factor
    Returns: a keras tensor
    '''
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1

    x = Conv2D(64, (7, 7), padding='same', use_bias=False, kernel_initializer='he_normal',
               kernel_regularizer=l2(weight_decay), strides=(2, 2))(input)
    x = BatchNormalization(axis=channel_axis)(x)
    x = Activation('relu')(x)
    # pool_size整数或长为2的整数tuple,代表在两个方向(竖直,水平)上的下采样因子,
    # 如取(22)将使图片在两个维度上均变为原长的一半。为整数意为各个维度值相同且为该数字。 
    x = MaxPooling2D((3, 3), strides=(2, 2), padding='same')(x)#(3,3)pool_size

    return x

添加一个分组卷积块。它是与paper相同的block

grouped convolution

def __grouped_convolution_block(input, grouped_channels, cardinality, strides, weight_decay=5e-4):
    ''' Adds a grouped convolution block. It is an equivalent block from the paper
    Args:
        input: input tensor
        grouped_channels: grouped number of filters
        cardinality: cardinality factor describing the number of groups
        strides: performs strided convolution for downscaling if > 1
        weight_decay: weight decay term
    Returns: a keras tensor
    '''
    init = input
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1

    group_list = []

    if cardinality == 1:
        # with cardinality 1, it is a standard convolution
        #由于基数为1,这是一个标准的卷积
        x = Conv2D(grouped_channels, (3, 3), padding='same', use_bias=False, strides=(strides, strides),
                   kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay))(init)
        x = BatchNormalization(axis=channel_axis)(x)
        x = Activation('relu')(x)
        return x

    for c in range(cardinality):
        x = Lambda(lambda z: z[:, :, :, c * grouped_channels:(c + 1) * grouped_channels]
        if K.image_data_format() == 'channels_last' else
        lambda z: z[:, c * grouped_channels:(c + 1) * grouped_channels, :, :])(input)#判断分组位置应该在哪儿

        x = Conv2D(grouped_channels, (3, 3), padding='same', use_bias=False, strides=(strides, strides),
                   kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay))(x)

        group_list.append(x)#分组训练然后加在一起

    group_merge = concatenate(group_list, axis=channel_axis)#数据合并按axis合并
    x = BatchNormalization(axis=channel_axis)(group_merge)#看下面的链接
    x = Activation('relu')(x)

    return x

参数详解

  • input:输入张量
  • grouped_channels:过滤器的分组数量
  • cardinality:描述组数量的基数因子 用来描述分组的卷积
  • stride:if>1则执行stride卷积以缩小缩放
  • weight_decay:权值衰减项

a if condition else b判断条件大于0,选择a,反之,选择b。

函数后有两个括号(双括号)

添加一个bottleneck 块

BottleneckBlock的相关计算

def __bottleneck_block(input, filters=64, cardinality=8, strides=1, weight_decay=5e-4):
    ''' Adds a bottleneck
       blockbottleneck实现的功能就是对通道数进行压缩,再放大
    Args:
        input: input tensor
        filters: number of output filters
        cardinality: cardinality factor described number of
            grouped convolutions
        strides: performs strided convolution for downsampling if > 1
        weight_decay: weight decay factor
    Returns: a keras tensor
    '''
    init = input

    grouped_channels = int(filters / cardinality)
    channel_axis = 1 if K.image_data_format() == 'channels_first' else -1

    # Check if input number of filters is same as 16 * k, else create convolution2d for this input
    #检查滤波器的输入数量是否与16 * k相同,否则为这个输入创建卷积2d
    #在二值化网络中,channel的数量肯定是受滤波器大小限制的,
    #总共就2的k次方中组合,k是滤波器大小
    if K.image_data_format() == 'channels_first':
        if init._keras_shape[1] != 2 * filters:
            init = Conv2D(filters * 2, (1, 1), padding='same', strides=(strides, strides),
                          use_bias=False, kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay))(init)
            init = BatchNormalization(axis=channel_axis)(init)
    else:
        if init._keras_shape[-1] != 2 * filters:
            init = Conv2D(filters * 2, (1, 1), padding='same', strides=(strides, strides),
                          use_bias=False, kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay))(init)
            init = BatchNormalization(axis=channel_axis)(init)

    x = Conv2D(filters, (1, 1), padding='same', use_bias=False,
               kernel_initializer='he_normal', kernel_regularizer=l2(weight_decay))(input)
    x = BatchNormalization(axis=channel_axis)(x)
    x = Activation('relu')(x)

    x = __grouped_convolution_block(x, grouped_channels, cardinality, strides, weight_decay)

    x = Conv2D(filters * 2, (1, 1), padding='same', use_bias=False, kernel_initializer='he_normal',
               kernel_regularizer=l2(weight_decay))(x)
    x = BatchNormalization(axis=channel_axis)(x)

    x = add([init, x])
    x = Activation('relu')(x)

    return x

创建带有指定参数的ResNeXt模型

先bootleneckBlock 然后池化再全连接

def __create_res_next(nb_classes, img_input, include_top, depth=29, cardinality=8, width=4,
                      weight_decay=5e-4, pooling=None):
    ''' Creates a ResNeXt model with specified parameters
    Args:
        nb_classes: Number of output classes
        img_input: Input tensor or layer
        include_top: Flag to include the last dense layer
        depth: Depth of the network. Can be an positive integer or a list
               Compute N = (n - 2) / 9.
               For a depth of 56, n = 56, N = (56 - 2) / 9 = 6
               For a depth of 101, n = 101, N = (101 - 2) / 9 = 11
        cardinality: the size of the set of transformations.
               Increasing cardinality improves classification accuracy,
        width: Width of the network.
        weight_decay: weight_decay (l2 norm)
        pooling: Optional pooling mode for feature extraction
            when `include_top` is `False`.
            - `None` means that the output of the model will be
                the 4D tensor output of the
                last convolutional layer.
            - `avg` means that global average pooling
                will be applied to the output of the
                last convolutional layer, and thus
                the output of the model will be a 2D tensor.
            - `max` means that global max pooling will
                be applied.
    Returns: a Keras Model
    '''

    if type(depth) is list or type(depth) is tuple:
        # If a list is provided, defer to user how many blocks are present
        #如果提供了一个列表,请根据用户提供了多少块
        N = list(depth)#转化为一个列表
    else:#depth是一个整数
        # Otherwise, default to 3 blocks each of default number of group convolution blocks
        #否则,默认为3块默认的组卷积块数
        N = [(depth - 2) // 9 for _ in range(3)]#转换为列表

    filters = cardinality * width#滤波器的计算式子
    filters_list = []

    for i in range(len(N)):
        filters_list.append(filters)#将滤波器转为一个list
        filters *= 2  # double the size of the filters

    x = __initial_conv_block(img_input, weight_decay)

    # block 1 (no pooling)
    for i in range(N[0]):#i从0开始到N[0]
        x = __bottleneck_block(x, filters_list[0], cardinality, strides=1, weight_decay=weight_decay)

    N = N[1:]  # remove the first block from block definition list列表中第一个元素被删除即N[0]
    filters_list = filters_list[1:]  # remove the first filter from the filter list

    # block 2 to N
    for block_idx, n_i in enumerate(N):#enumerate在字典上是枚举、列举的意思
        for i in range(n_i):
            if i == 0:
                x = __bottleneck_block(x, filters_list[block_idx], cardinality, strides=2,
                                       weight_decay=weight_decay)
            else:
                x = __bottleneck_block(x, filters_list[block_idx], cardinality, strides=1,
                                       weight_decay=weight_decay)

    if include_top:
        x = GlobalAveragePooling2D()(x)#池化
        x = Dense(nb_classes, use_bias=False, kernel_regularizer=l2(weight_decay),
                  kernel_initializer='he_normal', activation='softmax')(x)#全连接
    else:#最后不全连接层,池化
        if pooling == 'avg':
            x = GlobalAveragePooling2D()(x)
        elif pooling == 'max':
            x = GlobalMaxPooling2D()(x)

    return x

参数详解

  • nb_classes:输出类的数量
  • img_input:输入张量或层
  • include_top:包含最后一个全连接层的标志
  • depth:网络的深度。可以是一个正整数或一个列表
  • cardinality(基数):转换集合的大小。增加基数可以提高分类的准确性

运行结果

Model: "resnext"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
input_1 (InputLayer)            (None, 32, 32, 3)    0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 32, 32, 64)   1728        input_1[0][0]                    
__________________________________________________________________________________________________
batch_normalization_1 (BatchNor (None, 32, 32, 64)   256         conv2d_1[0][0]                   
__________________________________________________________________________________________________
activation_1 (Activation)       (None, 32, 32, 64)   0           batch_normalization_1[0][0]      
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 32, 32, 512)  32768       activation_1[0][0]               
__________________________________________________________________________________________________
batch_normalization_3 (BatchNor (None, 32, 32, 512)  2048        conv2d_3[0][0]                   
__________________________________________________________________________________________________
activation_2 (Activation)       (None, 32, 32, 512)  0           batch_normalization_3[0][0]      
__________________________________________________________________________________________________
lambda_1 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_2 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_3 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_4 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_5 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_6 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_7 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
lambda_8 (Lambda)               (None, 32, 32, 64)   0           activation_2[0][0]               
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 32, 32, 64)   36864       lambda_1[0][0]                   
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 32, 32, 64)   36864       lambda_2[0][0]                   
__________________________________________________________________________________________________
conv2d_6 (Conv2D)               (None, 32, 32, 64)   36864       lambda_3[0][0]                   
__________________________________________________________________________________________________
conv2d_7 (Conv2D)               (None, 32, 32, 64)   36864       lambda_4[0][0]                   
__________________________________________________________________________________________________
conv2d_8 (Conv2D)               (None, 32, 32, 64)   36864       lambda_5[0][0]                   
__________________________________________________________________________________________________
conv2d_9 (Conv2D)               (None, 32, 32, 64)   36864       lambda_6[0][0]                   
__________________________________________________________________________________________________
conv2d_10 (Conv2D)              (None, 32, 32, 64)   36864       lambda_7[0][0]                   
__________________________________________________________________________________________________
conv2d_11 (Conv2D)              (None, 32, 32, 64)   36864       lambda_8[0][0]                   
__________________________________________________________________________________________________
concatenate_1 (Concatenate)     (None, 32, 32, 512)  0           conv2d_4[0][0]                   
                                                                 conv2d_5[0][0]                   
                                                                 conv2d_6[0][0]                   
                                                                 conv2d_7[0][0]                   
                                                                 conv2d_8[0][0]                   
                                                                 conv2d_9[0][0]                   
                                                                 conv2d_10[0][0]                  
                                                                 conv2d_11[0][0]                  
__________________________________________________________________________________________________
batch_normalization_4 (BatchNor (None, 32, 32, 512)  2048        concatenate_1[0][0]              
__________________________________________________________________________________________________
activation_3 (Activation)       (None, 32, 32, 512)  0           batch_normalization_4[0][0]      
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 32, 32, 1024) 65536       activation_1[0][0]               
__________________________________________________________________________________________________
conv2d_12 (Conv2D)              (None, 32, 32, 1024) 524288      activation_3[0][0]               
__________________________________________________________________________________________________
batch_normalization_2 (BatchNor (None, 32, 32, 1024) 4096        conv2d_2[0][0]                   
__________________________________________________________________________________________________
batch_normalization_5 (BatchNor (None, 32, 32, 1024) 4096        conv2d_12[0][0]                  
__________________________________________________________________________________________________
add_1 (Add)                     (None, 32, 32, 1024) 0           batch_normalization_2[0][0]      
                                                                 batch_normalization_5[0][0]      
__________________________________________________________________________________________________
activation_4 (Activation)       (None, 32, 32, 1024) 0           add_1[0][0]                      
__________________________________________________________________________________________________
conv2d_13 (Conv2D)              (None, 32, 32, 512)  524288      activation_4[0][0]               
__________________________________________________________________________________________________
batch_normalization_6 (BatchNor (None, 32, 32, 512)  2048        conv2d_13[0][0]                  
__________________________________________________________________________________________________
activation_5 (Activation)       (None, 32, 32, 512)  0           batch_normalization_6[0][0]      
__________________________________________________________________________________________________
lambda_9 (Lambda)               (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_10 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_11 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_12 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_13 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_14 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_15 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
lambda_16 (Lambda)              (None, 32, 32, 64)   0           activation_5[0][0]               
__________________________________________________________________________________________________
conv2d_14 (Conv2D)              (None, 32, 32, 64)   36864       lambda_9[0][0]                   
__________________________________________________________________________________________________
conv2d_15 (Conv2D)              (None, 32, 32, 64)   36864       lambda_10[0][0]                  
__________________________________________________________________________________________________
conv2d_16 (Conv2D)              (None, 32, 32, 64)   36864       lambda_11[0][0]                  
__________________________________________________________________________________________________
conv2d_17 (Conv2D)              (None, 32, 32, 64)   36864       lambda_12[0][0]                  
__________________________________________________________________________________________________
conv2d_18 (Conv2D)              (None, 32, 32, 64)   36864       lambda_13[0][0]                  
__________________________________________________________________________________________________
conv2d_19 (Conv2D)              (None, 32, 32, 64)   36864       lambda_14[0][0]                  
__________________________________________________________________________________________________
conv2d_20 (Conv2D)              (None, 32, 32, 64)   36864       lambda_15[0][0]                  
__________________________________________________________________________________________________
conv2d_21 (Conv2D)              (None, 32, 32, 64)   36864       lambda_16[0][0]                  
__________________________________________________________________________________________________
concatenate_2 (Concatenate)     (None, 32, 32, 512)  0           conv2d_14[0][0]                  
                                                                 conv2d_15[0][0]                  
                                                                 conv2d_16[0][0]                  
                                                                 conv2d_17[0][0]                  
                                                                 conv2d_18[0][0]                  
                                                                 conv2d_19[0][0]                  
                                                                 conv2d_20[0][0]                  
                                                                 conv2d_21[0][0]                  
__________________________________________________________________________________________________
batch_normalization_7 (BatchNor (None, 32, 32, 512)  2048        concatenate_2[0][0]              
__________________________________________________________________________________________________
activation_6 (Activation)       (None, 32, 32, 512)  0           batch_normalization_7[0][0]      
__________________________________________________________________________________________________
conv2d_22 (Conv2D)              (None, 32, 32, 1024) 524288      activation_6[0][0]               
__________________________________________________________________________________________________
batch_normalization_8 (BatchNor (None, 32, 32, 1024) 4096        conv2d_22[0][0]                  
__________________________________________________________________________________________________
add_2 (Add)                     (None, 32, 32, 1024) 0           activation_4[0][0]               
                                                                 batch_normalization_8[0][0]      
__________________________________________________________________________________________________
activation_7 (Activation)       (None, 32, 32, 1024) 0           add_2[0][0]                      
__________________________________________________________________________________________________
conv2d_23 (Conv2D)              (None, 32, 32, 512)  524288      activation_7[0][0]               
__________________________________________________________________________________________________
batch_normalization_9 (BatchNor (None, 32, 32, 512)  2048        conv2d_23[0][0]                  
__________________________________________________________________________________________________
activation_8 (Activation)       (None, 32, 32, 512)  0           batch_normalization_9[0][0]      
__________________________________________________________________________________________________
lambda_17 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_18 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_19 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_20 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_21 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_22 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_23 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
lambda_24 (Lambda)              (None, 32, 32, 64)   0           activation_8[0][0]               
__________________________________________________________________________________________________
conv2d_24 (Conv2D)              (None, 32, 32, 64)   36864       lambda_17[0][0]                  
__________________________________________________________________________________________________
conv2d_25 (Conv2D)              (None, 32, 32, 64)   36864       lambda_18[0][0]                  
__________________________________________________________________________________________________
conv2d_26 (Conv2D)              (None, 32, 32, 64)   36864       lambda_19[0][0]                  
__________________________________________________________________________________________________
conv2d_27 (Conv2D)              (None, 32, 32, 64)   36864       lambda_20[0][0]                  
__________________________________________________________________________________________________
conv2d_28 (Conv2D)              (None, 32, 32, 64)   36864       lambda_21[0][0]                  
__________________________________________________________________________________________________
conv2d_29 (Conv2D)              (None, 32, 32, 64)   36864       lambda_22[0][0]                  
__________________________________________________________________________________________________
conv2d_30 (Conv2D)              (None, 32, 32, 64)   36864       lambda_23[0][0]                  
__________________________________________________________________________________________________
conv2d_31 (Conv2D)              (None, 32, 32, 64)   36864       lambda_24[0][0]                  
__________________________________________________________________________________________________
concatenate_3 (Concatenate)     (None, 32, 32, 512)  0           conv2d_24[0][0]                  
                                                                 conv2d_25[0][0]                  
                                                                 conv2d_26[0][0]                  
                                                                 conv2d_27[0][0]                  
                                                                 conv2d_28[0][0]                  
                                                                 conv2d_29[0][0]                  
                                                                 conv2d_30[0][0]                  
                                                                 conv2d_31[0][0]                  
__________________________________________________________________________________________________
batch_normalization_10 (BatchNo (None, 32, 32, 512)  2048        concatenate_3[0][0]              
__________________________________________________________________________________________________
activation_9 (Activation)       (None, 32, 32, 512)  0           batch_normalization_10[0][0]     
__________________________________________________________________________________________________
conv2d_32 (Conv2D)              (None, 32, 32, 1024) 524288      activation_9[0][0]               
__________________________________________________________________________________________________
batch_normalization_11 (BatchNo (None, 32, 32, 1024) 4096        conv2d_32[0][0]                  
__________________________________________________________________________________________________
add_3 (Add)                     (None, 32, 32, 1024) 0           activation_7[0][0]               
                                                                 batch_normalization_11[0][0]     
__________________________________________________________________________________________________
activation_10 (Activation)      (None, 32, 32, 1024) 0           add_3[0][0]                      
__________________________________________________________________________________________________
conv2d_34 (Conv2D)              (None, 32, 32, 1024) 1048576     activation_10[0][0]              
__________________________________________________________________________________________________
batch_normalization_13 (BatchNo (None, 32, 32, 1024) 4096        conv2d_34[0][0]                  
__________________________________________________________________________________________________
activation_11 (Activation)      (None, 32, 32, 1024) 0           batch_normalization_13[0][0]     
__________________________________________________________________________________________________
lambda_25 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_26 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_27 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_28 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_29 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_30 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_31 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
lambda_32 (Lambda)              (None, 32, 32, 128)  0           activation_11[0][0]              
__________________________________________________________________________________________________
conv2d_35 (Conv2D)              (None, 16, 16, 128)  147456      lambda_25[0][0]                  
__________________________________________________________________________________________________
conv2d_36 (Conv2D)              (None, 16, 16, 128)  147456      lambda_26[0][0]                  
__________________________________________________________________________________________________
conv2d_37 (Conv2D)              (None, 16, 16, 128)  147456      lambda_27[0][0]                  
__________________________________________________________________________________________________
conv2d_38 (Conv2D)              (None, 16, 16, 128)  147456      lambda_28[0][0]                  
__________________________________________________________________________________________________
conv2d_39 (Conv2D)              (None, 16, 16, 128)  147456      lambda_29[0][0]                  
__________________________________________________________________________________________________
conv2d_40 (Conv2D)              (None, 16, 16, 128)  147456      lambda_30[0][0]                  
__________________________________________________________________________________________________
conv2d_41 (Conv2D)              (None, 16, 16, 128)  147456      lambda_31[0][0]                  
__________________________________________________________________________________________________
conv2d_42 (Conv2D)              (None, 16, 16, 128)  147456      lambda_32[0][0]                  
__________________________________________________________________________________________________
concatenate_4 (Concatenate)     (None, 16, 16, 1024) 0           conv2d_35[0][0]                  
                                                                 conv2d_36[0][0]                  
                                                                 conv2d_37[0][0]                  
                                                                 conv2d_38[0][0]                  
                                                                 conv2d_39[0][0]                  
                                                                 conv2d_40[0][0]                  
                                                                 conv2d_41[0][0]                  
                                                                 conv2d_42[0][0]                  
__________________________________________________________________________________________________
batch_normalization_14 (BatchNo (None, 16, 16, 1024) 4096        concatenate_4[0][0]              
__________________________________________________________________________________________________
activation_12 (Activation)      (None, 16, 16, 1024) 0           batch_normalization_14[0][0]     
__________________________________________________________________________________________________
conv2d_33 (Conv2D)              (None, 16, 16, 2048) 2097152     activation_10[0][0]              
__________________________________________________________________________________________________
conv2d_43 (Conv2D)              (None, 16, 16, 2048) 2097152     activation_12[0][0]              
__________________________________________________________________________________________________
batch_normalization_12 (BatchNo (None, 16, 16, 2048) 8192        conv2d_33[0][0]                  
__________________________________________________________________________________________________
batch_normalization_15 (BatchNo (None, 16, 16, 2048) 8192        conv2d_43[0][0]                  
__________________________________________________________________________________________________
add_4 (Add)                     (None, 16, 16, 2048) 0           batch_normalization_12[0][0]     
                                                                 batch_normalization_15[0][0]     
__________________________________________________________________________________________________
activation_13 (Activation)      (None, 16, 16, 2048) 0           add_4[0][0]                      
__________________________________________________________________________________________________
conv2d_44 (Conv2D)              (None, 16, 16, 1024) 2097152     activation_13[0][0]              
__________________________________________________________________________________________________
batch_normalization_16 (BatchNo (None, 16, 16, 1024) 4096        conv2d_44[0][0]                  
__________________________________________________________________________________________________
activation_14 (Activation)      (None, 16, 16, 1024) 0           batch_normalization_16[0][0]     
__________________________________________________________________________________________________
lambda_33 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_34 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_35 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_36 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_37 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_38 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_39 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
lambda_40 (Lambda)              (None, 16, 16, 128)  0           activation_14[0][0]              
__________________________________________________________________________________________________
conv2d_45 (Conv2D)              (None, 16, 16, 128)  147456      lambda_33[0][0]                  
__________________________________________________________________________________________________
conv2d_46 (Conv2D)              (None, 16, 16, 128)  147456      lambda_34[0][0]                  
__________________________________________________________________________________________________
conv2d_47 (Conv2D)              (None, 16, 16, 128)  147456      lambda_35[0][0]                  
__________________________________________________________________________________________________
conv2d_48 (Conv2D)              (None, 16, 16, 128)  147456      lambda_36[0][0]                  
__________________________________________________________________________________________________
conv2d_49 (Conv2D)              (None, 16, 16, 128)  147456      lambda_37[0][0]                  
__________________________________________________________________________________________________
conv2d_50 (Conv2D)              (None, 16, 16, 128)  147456      lambda_38[0][0]                  
__________________________________________________________________________________________________
conv2d_51 (Conv2D)              (None, 16, 16, 128)  147456      lambda_39[0][0]                  
__________________________________________________________________________________________________
conv2d_52 (Conv2D)              (None, 16, 16, 128)  147456      lambda_40[0][0]                  
__________________________________________________________________________________________________
concatenate_5 (Concatenate)     (None, 16, 16, 1024) 0           conv2d_45[0][0]                  
                                                                 conv2d_46[0][0]                  
                                                                 conv2d_47[0][0]                  
                                                                 conv2d_48[0][0]                  
                                                                 conv2d_49[0][0]                  
                                                                 conv2d_50[0][0]                  
                                                                 conv2d_51[0][0]                  
                                                                 conv2d_52[0][0]                  
__________________________________________________________________________________________________
batch_normalization_17 (BatchNo (None, 16, 16, 1024) 4096        concatenate_5[0][0]              
__________________________________________________________________________________________________
activation_15 (Activation)      (None, 16, 16, 1024) 0           batch_normalization_17[0][0]     
__________________________________________________________________________________________________
conv2d_53 (Conv2D)              (None, 16, 16, 2048) 2097152     activation_15[0][0]              
__________________________________________________________________________________________________
batch_normalization_18 (BatchNo (None, 16, 16, 2048) 8192        conv2d_53[0][0]                  
__________________________________________________________________________________________________
add_5 (Add)                     (None, 16, 16, 2048) 0           activation_13[0][0]              
                                                                 batch_normalization_18[0][0]     
__________________________________________________________________________________________________
activation_16 (Activation)      (None, 16, 16, 2048) 0           add_5[0][0]                      
__________________________________________________________________________________________________
conv2d_54 (Conv2D)              (None, 16, 16, 1024) 2097152     activation_16[0][0]              
__________________________________________________________________________________________________
batch_normalization_19 (BatchNo (None, 16, 16, 1024) 4096        conv2d_54[0][0]                  
__________________________________________________________________________________________________
activation_17 (Activation)      (None, 16, 16, 1024) 0           batch_normalization_19[0][0]     
__________________________________________________________________________________________________
lambda_41 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_42 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_43 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_44 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_45 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_46 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_47 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
lambda_48 (Lambda)              (None, 16, 16, 128)  0           activation_17[0][0]              
__________________________________________________________________________________________________
conv2d_55 (Conv2D)              (None, 16, 16, 128)  147456      lambda_41[0][0]                  
__________________________________________________________________________________________________
conv2d_56 (Conv2D)              (None, 16, 16, 128)  147456      lambda_42[0][0]                  
__________________________________________________________________________________________________
conv2d_57 (Conv2D)              (None, 16, 16, 128)  147456      lambda_43[0][0]                  
__________________________________________________________________________________________________
conv2d_58 (Conv2D)              (None, 16, 16, 128)  147456      lambda_44[0][0]                  
__________________________________________________________________________________________________
conv2d_59 (Conv2D)              (None, 16, 16, 128)  147456      lambda_45[0][0]                  
__________________________________________________________________________________________________
conv2d_60 (Conv2D)              (None, 16, 16, 128)  147456      lambda_46[0][0]                  
__________________________________________________________________________________________________
conv2d_61 (Conv2D)              (None, 16, 16, 128)  147456      lambda_47[0][0]                  
__________________________________________________________________________________________________
conv2d_62 (Conv2D)              (None, 16, 16, 128)  147456      lambda_48[0][0]                  
__________________________________________________________________________________________________
concatenate_6 (Concatenate)     (None, 16, 16, 1024) 0           conv2d_55[0][0]                  
                                                                 conv2d_56[0][0]                  
                                                                 conv2d_57[0][0]                  
                                                                 conv2d_58[0][0]                  
                                                                 conv2d_59[0][0]                  
                                                                 conv2d_60[0][0]                  
                                                                 conv2d_61[0][0]                  
                                                                 conv2d_62[0][0]                  
__________________________________________________________________________________________________
batch_normalization_20 (BatchNo (None, 16, 16, 1024) 4096        concatenate_6[0][0]              
__________________________________________________________________________________________________
activation_18 (Activation)      (None, 16, 16, 1024) 0           batch_normalization_20[0][0]     
__________________________________________________________________________________________________
conv2d_63 (Conv2D)              (None, 16, 16, 2048) 2097152     activation_18[0][0]              
__________________________________________________________________________________________________
batch_normalization_21 (BatchNo (None, 16, 16, 2048) 8192        conv2d_63[0][0]                  
__________________________________________________________________________________________________
add_6 (Add)                     (None, 16, 16, 2048) 0           activation_16[0][0]              
                                                                 batch_normalization_21[0][0]     
__________________________________________________________________________________________________
activation_19 (Activation)      (None, 16, 16, 2048) 0           add_6[0][0]                      
__________________________________________________________________________________________________
conv2d_65 (Conv2D)              (None, 16, 16, 2048) 4194304     activation_19[0][0]              
__________________________________________________________________________________________________
batch_normalization_23 (BatchNo (None, 16, 16, 2048) 8192        conv2d_65[0][0]                  
__________________________________________________________________________________________________
activation_20 (Activation)      (None, 16, 16, 2048) 0           batch_normalization_23[0][0]     
__________________________________________________________________________________________________
lambda_49 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_50 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_51 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_52 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_53 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_54 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_55 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
lambda_56 (Lambda)              (None, 16, 16, 256)  0           activation_20[0][0]              
__________________________________________________________________________________________________
conv2d_66 (Conv2D)              (None, 8, 8, 256)    589824      lambda_49[0][0]                  
__________________________________________________________________________________________________
conv2d_67 (Conv2D)              (None, 8, 8, 256)    589824      lambda_50[0][0]                  
__________________________________________________________________________________________________
conv2d_68 (Conv2D)              (None, 8, 8, 256)    589824      lambda_51[0][0]                  
__________________________________________________________________________________________________
conv2d_69 (Conv2D)              (None, 8, 8, 256)    589824      lambda_52[0][0]                  
__________________________________________________________________________________________________
conv2d_70 (Conv2D)              (None, 8, 8, 256)    589824      lambda_53[0][0]                  
__________________________________________________________________________________________________
conv2d_71 (Conv2D)              (None, 8, 8, 256)    589824      lambda_54[0][0]                  
__________________________________________________________________________________________________
conv2d_72 (Conv2D)              (None, 8, 8, 256)    589824      lambda_55[0][0]                  
__________________________________________________________________________________________________
conv2d_73 (Conv2D)              (None, 8, 8, 256)    589824      lambda_56[0][0]                  
__________________________________________________________________________________________________
concatenate_7 (Concatenate)     (None, 8, 8, 2048)   0           conv2d_66[0][0]                  
                                                                 conv2d_67[0][0]                  
                                                                 conv2d_68[0][0]                  
                                                                 conv2d_69[0][0]                  
                                                                 conv2d_70[0][0]                  
                                                                 conv2d_71[0][0]                  
                                                                 conv2d_72[0][0]                  
                                                                 conv2d_73[0][0]                  
__________________________________________________________________________________________________
batch_normalization_24 (BatchNo (None, 8, 8, 2048)   8192        concatenate_7[0][0]              
__________________________________________________________________________________________________
activation_21 (Activation)      (None, 8, 8, 2048)   0           batch_normalization_24[0][0]     
__________________________________________________________________________________________________
conv2d_64 (Conv2D)              (None, 8, 8, 4096)   8388608     activation_19[0][0]              
__________________________________________________________________________________________________
conv2d_74 (Conv2D)              (None, 8, 8, 4096)   8388608     activation_21[0][0]              
__________________________________________________________________________________________________
batch_normalization_22 (BatchNo (None, 8, 8, 4096)   16384       conv2d_64[0][0]                  
__________________________________________________________________________________________________
batch_normalization_25 (BatchNo (None, 8, 8, 4096)   16384       conv2d_74[0][0]                  
__________________________________________________________________________________________________
add_7 (Add)                     (None, 8, 8, 4096)   0           batch_normalization_22[0][0]     
                                                                 batch_normalization_25[0][0]     
__________________________________________________________________________________________________
activation_22 (Activation)      (None, 8, 8, 4096)   0           add_7[0][0]                      
__________________________________________________________________________________________________
conv2d_75 (Conv2D)              (None, 8, 8, 2048)   8388608     activation_22[0][0]              
__________________________________________________________________________________________________
batch_normalization_26 (BatchNo (None, 8, 8, 2048)   8192        conv2d_75[0][0]                  
__________________________________________________________________________________________________
activation_23 (Activation)      (None, 8, 8, 2048)   0           batch_normalization_26[0][0]     
__________________________________________________________________________________________________
lambda_57 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_58 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_59 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_60 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_61 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_62 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_63 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
lambda_64 (Lambda)              (None, 8, 8, 256)    0           activation_23[0][0]              
__________________________________________________________________________________________________
conv2d_76 (Conv2D)              (None, 8, 8, 256)    589824      lambda_57[0][0]                  
__________________________________________________________________________________________________
conv2d_77 (Conv2D)              (None, 8, 8, 256)    589824      lambda_58[0][0]                  
__________________________________________________________________________________________________
conv2d_78 (Conv2D)              (None, 8, 8, 256)    589824      lambda_59[0][0]                  
__________________________________________________________________________________________________
conv2d_79 (Conv2D)              (None, 8, 8, 256)    589824      lambda_60[0][0]                  
__________________________________________________________________________________________________
conv2d_80 (Conv2D)              (None, 8, 8, 256)    589824      lambda_61[0][0]                  
__________________________________________________________________________________________________
conv2d_81 (Conv2D)              (None, 8, 8, 256)    589824      lambda_62[0][0]                  
__________________________________________________________________________________________________
conv2d_82 (Conv2D)              (None, 8, 8, 256)    589824      lambda_63[0][0]                  
__________________________________________________________________________________________________
conv2d_83 (Conv2D)              (None, 8, 8, 256)    589824      lambda_64[0][0]                  
__________________________________________________________________________________________________
concatenate_8 (Concatenate)     (None, 8, 8, 2048)   0           conv2d_76[0][0]                  
                                                                 conv2d_77[0][0]                  
                                                                 conv2d_78[0][0]                  
                                                                 conv2d_79[0][0]                  
                                                                 conv2d_80[0][0]                  
                                                                 conv2d_81[0][0]                  
                                                                 conv2d_82[0][0]                  
                                                                 conv2d_83[0][0]                  
__________________________________________________________________________________________________
batch_normalization_27 (BatchNo (None, 8, 8, 2048)   8192        concatenate_8[0][0]              
__________________________________________________________________________________________________
activation_24 (Activation)      (None, 8, 8, 2048)   0           batch_normalization_27[0][0]     
__________________________________________________________________________________________________
conv2d_84 (Conv2D)              (None, 8, 8, 4096)   8388608     activation_24[0][0]              
__________________________________________________________________________________________________
batch_normalization_28 (BatchNo (None, 8, 8, 4096)   16384       conv2d_84[0][0]                  
__________________________________________________________________________________________________
add_8 (Add)                     (None, 8, 8, 4096)   0           activation_22[0][0]              
                                                                 batch_normalization_28[0][0]     
__________________________________________________________________________________________________
activation_25 (Activation)      (None, 8, 8, 4096)   0           add_8[0][0]                      
__________________________________________________________________________________________________
conv2d_85 (Conv2D)              (None, 8, 8, 2048)   8388608     activation_25[0][0]              
__________________________________________________________________________________________________
batch_normalization_29 (BatchNo (None, 8, 8, 2048)   8192        conv2d_85[0][0]                  
__________________________________________________________________________________________________
activation_26 (Activation)      (None, 8, 8, 2048)   0           batch_normalization_29[0][0]     
__________________________________________________________________________________________________
lambda_65 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_66 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_67 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_68 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_69 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_70 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_71 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
lambda_72 (Lambda)              (None, 8, 8, 256)    0           activation_26[0][0]              
__________________________________________________________________________________________________
conv2d_86 (Conv2D)              (None, 8, 8, 256)    589824      lambda_65[0][0]                  
__________________________________________________________________________________________________
conv2d_87 (Conv2D)              (None, 8, 8, 256)    589824      lambda_66[0][0]                  
__________________________________________________________________________________________________
conv2d_88 (Conv2D)              (None, 8, 8, 256)    589824      lambda_67[0][0]                  
__________________________________________________________________________________________________
conv2d_89 (Conv2D)              (None, 8, 8, 256)    589824      lambda_68[0][0]                  
__________________________________________________________________________________________________
conv2d_90 (Conv2D)              (None, 8, 8, 256)    589824      lambda_69[0][0]                  
__________________________________________________________________________________________________
conv2d_91 (Conv2D)              (None, 8, 8, 256)    589824      lambda_70[0][0]                  
__________________________________________________________________________________________________
conv2d_92 (Conv2D)              (None, 8, 8, 256)    589824      lambda_71[0][0]                  
__________________________________________________________________________________________________
conv2d_93 (Conv2D)              (None, 8, 8, 256)    589824      lambda_72[0][0]                  
__________________________________________________________________________________________________
concatenate_9 (Concatenate)     (None, 8, 8, 2048)   0           conv2d_86[0][0]                  
                                                                 conv2d_87[0][0]                  
                                                                 conv2d_88[0][0]                  
                                                                 conv2d_89[0][0]                  
                                                                 conv2d_90[0][0]                  
                                                                 conv2d_91[0][0]                  
                                                                 conv2d_92[0][0]                  
                                                                 conv2d_93[0][0]                  
__________________________________________________________________________________________________
batch_normalization_30 (BatchNo (None, 8, 8, 2048)   8192        concatenate_9[0][0]              
__________________________________________________________________________________________________
activation_27 (Activation)      (None, 8, 8, 2048)   0           batch_normalization_30[0][0]     
__________________________________________________________________________________________________
conv2d_94 (Conv2D)              (None, 8, 8, 4096)   8388608     activation_27[0][0]              
__________________________________________________________________________________________________
batch_normalization_31 (BatchNo (None, 8, 8, 4096)   16384       conv2d_94[0][0]                  
__________________________________________________________________________________________________
add_9 (Add)                     (None, 8, 8, 4096)   0           activation_25[0][0]              
                                                                 batch_normalization_31[0][0]     
__________________________________________________________________________________________________
activation_28 (Activation)      (None, 8, 8, 4096)   0           add_9[0][0]                      
__________________________________________________________________________________________________
global_average_pooling2d_1 (Glo (None, 4096)         0           activation_28[0][0]              
__________________________________________________________________________________________________
dense_1 (Dense)                 (None, 10)           40960       global_average_pooling2d_1[0][0] 
==================================================================================================
Total params: 89,700,288
Trainable params: 89,599,808
Non-trainable params: 100,480
__________________________________________________________________________________________________

你可能感兴趣的:(笔记,python学习,python,深度学习,tensorflow,卷积神经网络)