(bottom)
return conv1_3x3_s2, conv1_3x3_s2_bn, conv1_3x3_s2_scale, conv1_3x3_s2_relu, conv2_3x3_s1, conv2_3x3_s1_bn, \
           conv2_3x3_s1_scale, conv2_3x3_s1_relu, conv3_3x3_s1, conv3_3x3_s1_bn, conv3_3x3_s1_scale, conv3_3x3_s1_relu, \
           inception_stem1_3x3_s2, inception_stem1_3x3_s2_bn, inception_stem1_3x3_s2_scale, inception_stem1_3x3_s2_relu, \
           inception_stem1_pool, inception_stem1, inception_stem2_3x3_reduce, inception_stem2_3x3_reduce_bn, \
           inception_stem2_3x3_reduce_scale, inception_stem2_3x3_reduce_relu, inception_stem2_3x3, \
           inception_stem2_3x3_bn, inception_stem2_3x3_scale, inception_stem2_3x3_relu, inception_stem2_7x1_reduce, \
           inception_stem2_7x1_reduce_bn, inception_stem2_7x1_reduce_scale, inception_stem2_7x1_reduce_relu, \
           inception_stem2_7x1, inception_stem2_7x1_bn, inception_stem2_7x1_scale, inception_stem2_7x1_relu, \
           inception_stem2_1x7, inception_stem2_1x7_bn, inception_stem2_1x7_scale, inception_stem2_1x7_relu, \
           inception_stem2_3x3_2, inception_stem2_3x3_2_bn, inception_stem2_3x3_2_scale, inception_stem2_3x3_2_relu, \
           inception_stem2, inception_stem3_3x3_s2, inception_stem3_3x3_s2_bn, inception_stem3_3x3_s2_scale, \
           inception_stem3_3x3_s2_relu, inception_stem3_pool, inception_stem3
input:3x299x299
    output:384x35x35
    :param bottom: bottom layer
    :return: layers
input:3x299x299
    output:384x35x35
    :param bottom: bottom layer
    :return: layers
input : 3x299x299 output : 384x35x35 : param bottom : bottom layer : return : layers
def stem_v4_299x299(bottom):
    """
    input:3x299x299
    output:384x35x35
    :param bottom: bottom layer
    :return: layers
    """
    conv1_3x3_s2, conv1_3x3_s2_bn, conv1_3x3_s2_scale, conv1_3x3_s2_relu = \
        factorization_conv_bn_scale_relu(bottom, num_output=32, kernel_size=3, stride=2)  # 32x149x149
    conv2_3x3_s1, conv2_3x3_s1_bn, conv2_3x3_s1_scale, conv2_3x3_s1_relu = \
        factorization_conv_bn_scale_relu(conv1_3x3_s2, num_output=32, kernel_size=3, stride=1)  # 32x147x147
    conv3_3x3_s1, conv3_3x3_s1_bn, conv3_3x3_s1_scale, conv3_3x3_s1_relu = \
        factorization_conv_bn_scale_relu(conv2_3x3_s1, num_output=64, kernel_size=3, stride=1, pad=1)  # 64x147x147

    inception_stem1_pool = L.Pooling(conv3_3x3_s1, kernel_size=3, stride=2, pool=P.Pooling.MAX)  # 64x73x73
    inception_stem1_3x3_s2, inception_stem1_3x3_s2_bn, inception_stem1_3x3_s2_scale, inception_stem1_3x3_s2_relu = \
        factorization_conv_bn_scale_relu(conv3_3x3_s1, num_output=96, kernel_size=3, stride=2)  # 96x73x73
    inception_stem1 = L.Concat(inception_stem1_pool, inception_stem1_3x3_s2)  # 160x73x73

    inception_stem2_3x3_reduce, inception_stem2_3x3_reduce_bn, inception_stem2_3x3_reduce_scale, \
    inception_stem2_3x3_reduce_relu = \
        factorization_conv_bn_scale_relu(inception_stem1, num_output=64, kernel_size=1)  # 64x73x73
    inception_stem2_3x3, inception_stem2_3x3_bn, inception_stem2_3x3_scale, inception_stem2_3x3_relu = \
        factorization_conv_bn_scale_relu(inception_stem2_3x3_reduce, num_output=96, kernel_size=3)  # 96x71x71
    inception_stem2_7x1_reduce, inception_stem2_7x1_reduce_bn, inception_stem2_7x1_reduce_scale, \
    inception_stem2_7x1_reduce_relu = \
        factorization_conv_bn_scale_relu(inception_stem1, num_output=64, kernel_size=1)  # 64x73x73
    inception_stem2_7x1, inception_stem2_7x1_bn, inception_stem2_7x1_scale, inception_stem2_7x1_relu = \
        factorization_conv_mxn(inception_stem2_7x1_reduce, num_output=64, kernel_h=7, kernel_w=1, pad_h=3,
                               pad_w=0)  # 64x73x73
    inception_stem2_1x7, inception_stem2_1x7_bn, inception_stem2_1x7_scale, inception_stem2_1x7_relu = \
        factorization_conv_mxn(inception_stem2_7x1, num_output=64, kernel_h=1, kernel_w=7, pad_h=0, pad_w=3)  # 64x73x73
    inception_stem2_3x3_2, inception_stem2_3x3_2_bn, inception_stem2_3x3_2_scale, inception_stem2_3x3_2_relu = \
        factorization_conv_bn_scale_relu(inception_stem2_1x7, num_output=96, kernel_size=3)  # 96x71x71
    inception_stem2 = L.Concat(inception_stem2_3x3, inception_stem2_3x3_2)  # 192x71x71

    inception_stem3_3x3_s2, inception_stem3_3x3_s2_bn, inception_stem3_3x3_s2_scale, inception_stem3_3x3_s2_relu = \
        factorization_conv_bn_scale_relu(inception_stem2, num_output=192, stride=2)  # 192x35x35
    inception_stem3_pool = L.Pooling(inception_stem2, kernel_size=3, stride=2, pool=P.Pooling.MAX)  # 192x35x35
    inception_stem3 = L.Concat(inception_stem3_3x3_s2, inception_stem3_pool)  # 384x35x35

    return conv1_3x3_s2, conv1_3x3_s2_bn, conv1_3x3_s2_scale, conv1_3x3_s2_relu, conv2_3x3_s1, conv2_3x3_s1_bn, \
           conv2_3x3_s1_scale, conv2_3x3_s1_relu, conv3_3x3_s1, conv3_3x3_s1_bn, conv3_3x3_s1_scale, conv3_3x3_s1_relu, \
           inception_stem1_3x3_s2, inception_stem1_3x3_s2_bn, inception_stem1_3x3_s2_scale, inception_stem1_3x3_s2_relu, \
           inception_stem1_pool, inception_stem1, inception_stem2_3x3_reduce, inception_stem2_3x3_reduce_bn, \
           inception_stem2_3x3_reduce_scale, inception_stem2_3x3_reduce_relu, inception_stem2_3x3, \
           inception_stem2_3x3_bn, inception_stem2_3x3_scale, inception_stem2_3x3_relu, inception_stem2_7x1_reduce, \
           inception_stem2_7x1_reduce_bn, inception_stem2_7x1_reduce_scale, inception_stem2_7x1_reduce_relu, \
           inception_stem2_7x1, inception_stem2_7x1_bn, inception_stem2_7x1_scale, inception_stem2_7x1_relu, \
           inception_stem2_1x7, inception_stem2_1x7_bn, inception_stem2_1x7_scale, inception_stem2_1x7_relu, \
           inception_stem2_3x3_2, inception_stem2_3x3_2_bn, inception_stem2_3x3_2_scale, inception_stem2_3x3_2_relu, \
           inception_stem2, inception_stem3_3x3_s2, inception_stem3_3x3_s2_bn, inception_stem3_3x3_s2_scale, \
           inception_stem3_3x3_s2_relu, inception_stem3_pool, inception_stem3
def stem_v4_299x299 ( bottom ) : conv1_3x3_s2 , conv1_3x3_s2_bn , conv1_3x3_s2_scale , conv1_3x3_s2_relu = factorization_conv_bn_scale_relu ( bottom , num_output = 32 , kernel_size = 3 , stride = 2 ) # 32x149x149 conv2_3x3_s1 , conv2_3x3_s1_bn , conv2_3x3_s1_scale , conv2_3x3_s1_relu = factorization_conv_bn_scale_relu ( conv1_3x3_s2 , num_output = 32 , kernel_size = 3 , stride = 1 ) # 32x147x147 conv3_3x3_s1 , conv3_3x3_s1_bn , conv3_3x3_s1_scale , conv3_3x3_s1_relu = factorization_conv_bn_scale_relu ( conv2_3x3_s1 , num_output = 64 , kernel_size = 3 , stride = 1 , pad = 1 ) # 64x147x147 inception_stem1_pool = L . Pooling ( conv3_3x3_s1 , kernel_size = 3 , stride = 2 , pool = P . Pooling . MAX ) # 64x73x73 inception_stem1_3x3_s2 , inception_stem1_3x3_s2_bn , inception_stem1_3x3_s2_scale , inception_stem1_3x3_s2_relu = factorization_conv_bn_scale_relu ( conv3_3x3_s1 , num_output = 96 , kernel_size = 3 , stride = 2 ) # 96x73x73 inception_stem1 = L . Concat ( inception_stem1_pool , inception_stem1_3x3_s2 ) # 160x73x73 inception_stem2_3x3_reduce , inception_stem2_3x3_reduce_bn , inception_stem2_3x3_reduce_scale , inception_stem2_3x3_reduce_relu = factorization_conv_bn_scale_relu ( inception_stem1 , num_output = 64 , kernel_size = 1 ) # 64x73x73 inception_stem2_3x3 , inception_stem2_3x3_bn , inception_stem2_3x3_scale , inception_stem2_3x3_relu = factorization_conv_bn_scale_relu ( inception_stem2_3x3_reduce , num_output = 96 , kernel_size = 3 ) # 96x71x71 inception_stem2_7x1_reduce , inception_stem2_7x1_reduce_bn , inception_stem2_7x1_reduce_scale , inception_stem2_7x1_reduce_relu = factorization_conv_bn_scale_relu ( inception_stem1 , num_output = 64 , kernel_size = 1 ) # 64x73x73 inception_stem2_7x1 , inception_stem2_7x1_bn , inception_stem2_7x1_scale , inception_stem2_7x1_relu = factorization_conv_mxn ( inception_stem2_7x1_reduce , num_output = 64 , kernel_h = 7 , kernel_w = 1 , pad_h = 3 , pad_w = 0 ) # 64x73x73 inception_stem2_1x7 , inception_stem2_1x7_bn , inception_stem2_1x7_scale , inception_stem2_1x7_relu = factorization_conv_mxn ( inception_stem2_7x1 , num_output = 64 , kernel_h = 1 , kernel_w = 7 , pad_h = 0 , pad_w = 3 ) # 64x73x73 inception_stem2_3x3_2 , inception_stem2_3x3_2_bn , inception_stem2_3x3_2_scale , inception_stem2_3x3_2_relu = factorization_conv_bn_scale_relu ( inception_stem2_1x7 , num_output = 96 , kernel_size = 3 ) # 96x71x71 inception_stem2 = L . Concat ( inception_stem2_3x3 , inception_stem2_3x3_2 ) # 192x71x71 inception_stem3_3x3_s2 , inception_stem3_3x3_s2_bn , inception_stem3_3x3_s2_scale , inception_stem3_3x3_s2_relu = factorization_conv_bn_scale_relu ( inception_stem2 , num_output = 192 , stride = 2 ) # 192x35x35 inception_stem3_pool = L . Pooling ( inception_stem2 , kernel_size = 3 , stride = 2 , pool = P . Pooling . MAX ) # 192x35x35 inception_stem3 = L . Concat ( inception_stem3_3x3_s2 , inception_stem3_pool ) # 384x35x35 return conv1_3x3_s2 , conv1_3x3_s2_bn , conv1_3x3_s2_scale , conv1_3x3_s2_relu , conv2_3x3_s1 , conv2_3x3_s1_bn , conv2_3x3_s1_scale , conv2_3x3_s1_relu , conv3_3x3_s1 , conv3_3x3_s1_bn , conv3_3x3_s1_scale , conv3_3x3_s1_relu , inception_stem1_3x3_s2 , inception_stem1_3x3_s2_bn , inception_stem1_3x3_s2_scale , inception_stem1_3x3_s2_relu , inception_stem1_pool , inception_stem1 , inception_stem2_3x3_reduce , inception_stem2_3x3_reduce_bn , inception_stem2_3x3_reduce_scale , inception_stem2_3x3_reduce_relu , inception_stem2_3x3 , inception_stem2_3x3_bn , inception_stem2_3x3_scale , inception_stem2_3x3_relu , inception_stem2_7x1_reduce , inception_stem2_7x1_reduce_bn , inception_stem2_7x1_reduce_scale , inception_stem2_7x1_reduce_relu , inception_stem2_7x1 , inception_stem2_7x1_bn , inception_stem2_7x1_scale , inception_stem2_7x1_relu , inception_stem2_1x7 , inception_stem2_1x7_bn , inception_stem2_1x7_scale , inception_stem2_1x7_relu , inception_stem2_3x3_2 , inception_stem2_3x3_2_bn , inception_stem2_3x3_2_scale , inception_stem2_3x3_2_relu , inception_stem2 , inception_stem3_3x3_s2 , inception_stem3_3x3_s2_bn , inception_stem3_3x3_s2_scale , inception_stem3_3x3_s2_relu , inception_stem3_pool , inception_stem3