(bottom, pool_proj_num_output=32)
return conv_1x1, conv_1x1_bn, conv_1x1_scale, conv_1x1_relu, conv_5x5_reduce, conv_5x5_reduce_bn, \
           conv_5x5_reduce_scale, conv_5x5_reduce_relu, conv_5x5, conv_5x5_bn, conv_5x5_scale, conv_5x5_relu, \
           conv_3x3_reduce, conv_3x3_reduce_bn, conv_3x3_reduce_scale, conv_3x3_reduce_relu, conv_3x3, conv_3x3_bn, \
           conv_3x3_scale, conv_3x3_relu, conv_3x3_2, conv_3x3_2_bn, conv_3x3_2_scale, conv_3x3_2_relu, pool, \
           pool_proj, pool_proj_bn, pool_proj_scale, pool_proj_relu, concat
input:192or256or288x35x35
    output:256or288x35x35
    :param pool_proj_num_output: num_output of pool_proj
    :param bottom: bottom layer
    :return: layers
input:192or256or288x35x35
    output:256or288x35x35
    :param pool_proj_num_output: num_output of pool_proj
    :param bottom: bottom layer
    :return: layers
input : 192or256or288x35x35 output : 256or288x35x35 : param pool_proj_num_output : num_output of pool_proj : param bottom : bottom layer : return : layers
def inception_v3_a(bottom, pool_proj_num_output=32):
    """
    input:192or256or288x35x35
    output:256or288x35x35
    :param pool_proj_num_output: num_output of pool_proj
    :param bottom: bottom layer
    :return: layers
    """
    conv_1x1, conv_1x1_bn, conv_1x1_scale, conv_1x1_relu = \
        factorization_conv_bn_scale_relu(bottom, num_output=64, kernel_size=1)  # 64x35x35

    conv_5x5_reduce, conv_5x5_reduce_bn, conv_5x5_reduce_scale, conv_5x5_reduce_relu = \
        factorization_conv_bn_scale_relu(bottom, num_output=48, kernel_size=1)  # 48x35x35
    conv_5x5, conv_5x5_bn, conv_5x5_scale, conv_5x5_relu = \
        factorization_conv_bn_scale_relu(conv_5x5_reduce, num_output=64, kernel_size=5, pad=2)  # 64x35x35

    conv_3x3_reduce, conv_3x3_reduce_bn, conv_3x3_reduce_scale, conv_3x3_reduce_relu = \
        factorization_conv_bn_scale_relu(bottom, kernel_size=1, num_output=64)  # 64x35x35
    conv_3x3, conv_3x3_bn, conv_3x3_scale, conv_3x3_relu = \
        factorization_conv_bn_scale_relu(conv_3x3_reduce, kernel_size=3, num_output=96, pad=1)  # 96x35x35
    conv_3x3_2, conv_3x3_2_bn, conv_3x3_2_scale, conv_3x3_2_relu = \
        factorization_conv_bn_scale_relu(conv_3x3, kernel_size=3, num_output=96, pad=1)  # 96x35x35

    pool = L.Pooling(bottom, kernel_size=3, stride=1, pad=1, pool=P.Pooling.AVE)  # 192x35x35
    pool_proj, pool_proj_bn, pool_proj_scale, pool_proj_relu = \
        factorization_conv_bn_scale_relu(pool, kernel_size=1, num_output=pool_proj_num_output)  # 32x35x35

    concat = L.Concat(conv_1x1, conv_5x5, conv_3x3_2, pool_proj)  # 256or288(64+64+96+32or64)x35x35

    return conv_1x1, conv_1x1_bn, conv_1x1_scale, conv_1x1_relu, conv_5x5_reduce, conv_5x5_reduce_bn, \
           conv_5x5_reduce_scale, conv_5x5_reduce_relu, conv_5x5, conv_5x5_bn, conv_5x5_scale, conv_5x5_relu, \
           conv_3x3_reduce, conv_3x3_reduce_bn, conv_3x3_reduce_scale, conv_3x3_reduce_relu, conv_3x3, conv_3x3_bn, \
           conv_3x3_scale, conv_3x3_relu, conv_3x3_2, conv_3x3_2_bn, conv_3x3_2_scale, conv_3x3_2_relu, pool, \
           pool_proj, pool_proj_bn, pool_proj_scale, pool_proj_relu, concat
def inception_v3_a ( bottom , pool_proj_num_output = 32 ) : conv_1x1 , conv_1x1_bn , conv_1x1_scale , conv_1x1_relu = factorization_conv_bn_scale_relu ( bottom , num_output = 64 , kernel_size = 1 ) # 64x35x35 conv_5x5_reduce , conv_5x5_reduce_bn , conv_5x5_reduce_scale , conv_5x5_reduce_relu = factorization_conv_bn_scale_relu ( bottom , num_output = 48 , kernel_size = 1 ) # 48x35x35 conv_5x5 , conv_5x5_bn , conv_5x5_scale , conv_5x5_relu = factorization_conv_bn_scale_relu ( conv_5x5_reduce , num_output = 64 , kernel_size = 5 , pad = 2 ) # 64x35x35 conv_3x3_reduce , conv_3x3_reduce_bn , conv_3x3_reduce_scale , conv_3x3_reduce_relu = factorization_conv_bn_scale_relu ( bottom , kernel_size = 1 , num_output = 64 ) # 64x35x35 conv_3x3 , conv_3x3_bn , conv_3x3_scale , conv_3x3_relu = factorization_conv_bn_scale_relu ( conv_3x3_reduce , kernel_size = 3 , num_output = 96 , pad = 1 ) # 96x35x35 conv_3x3_2 , conv_3x3_2_bn , conv_3x3_2_scale , conv_3x3_2_relu = factorization_conv_bn_scale_relu ( conv_3x3 , kernel_size = 3 , num_output = 96 , pad = 1 ) # 96x35x35 pool = L . Pooling ( bottom , kernel_size = 3 , stride = 1 , pad = 1 , pool = P . Pooling . AVE ) # 192x35x35 pool_proj , pool_proj_bn , pool_proj_scale , pool_proj_relu = factorization_conv_bn_scale_relu ( pool , kernel_size = 1 , num_output = pool_proj_num_output ) # 32x35x35 concat = L . Concat ( conv_1x1 , conv_5x5 , conv_3x3_2 , pool_proj ) # 256or288(64+64+96+32or64)x35x35 return conv_1x1 , conv_1x1_bn , conv_1x1_scale , conv_1x1_relu , conv_5x5_reduce , conv_5x5_reduce_bn , conv_5x5_reduce_scale , conv_5x5_reduce_relu , conv_5x5 , conv_5x5_bn , conv_5x5_scale , conv_5x5_relu , conv_3x3_reduce , conv_3x3_reduce_bn , conv_3x3_reduce_scale , conv_3x3_reduce_relu , conv_3x3 , conv_3x3_bn , conv_3x3_scale , conv_3x3_relu , conv_3x3_2 , conv_3x3_2_bn , conv_3x3_2_scale , conv_3x3_2_relu , pool , pool_proj , pool_proj_bn , pool_proj_scale , pool_proj_relu , concat