def calculate_batch_normalization_output_shapes(operator):
    '''
    Allowed input/output patterns are
        1. [N, C] ---> [N, C]
        2. [N, C, H, W] ---> [N, C, H, W]

    This operator just uses the operator input shape as its output shape.
    '''
    check_input_and_output_numbers(operator, input_count_range=1, output_count_range=1)
    check_input_and_output_types(operator, good_input_types=[FloatTensorType])

    input_shape = operator.inputs[0].type.shape
    if len(input_shape) not in [2, 4]:
        raise RuntimeError('Input must be a 2-D or a 4-D tensor')

    operator.outputs[0].type.shape = copy.deepcopy(operator.inputs[0].type.shape)
def calculate_batch_normalization_output_shapes ( operator ) : check_input_and_output_numbers ( operator , input_count_range = 1 , output_count_range = 1 ) check_input_and_output_types ( operator , good_input_types = [ FloatTensorType ] ) input_shape = operator . inputs [ 0 ] . type . shape if len ( input_shape ) not in [ 2 , 4 ] : raise RuntimeError ( 'Input must be a 2-D or a 4-D tensor' ) operator . outputs [ 0 ] . type . shape = copy . deepcopy ( operator . inputs [ 0 ] . type . shape )
Allowed input/output patterns are
        1. [N, C] ---> [N, C]
        2. [N, C, H, W] ---> [N, C, H, W]

    This operator just uses the operator input shape as its output shape.