'infer_shape interface. Can override when creating new operators.
Parameters
in_shape : list
List of argument shapes in the same order as
declared in list_arguments.
Returns
in_shape : list
List of argument shapes. Can be modified from in_shape.
out_shape : list
List of output shapes calculated from in_shape,
in the same order as declared in list_outputs.
aux_shape : Optional, list
List of aux shapes calculated from in_shape,
in the same order as declared in list_auxiliary_states.'

def infer_shape(self, in_shape):

    return (in_shape, ((in_shape[0],) * len(self.list_outputs())), ())
