def METHOD_NAME(layer: Layer, rank: int) -> (np.array, np.array):
    """
    :param layer: Module to be split
    :param rank: rank for splitting
    :return: v and h matrices after Single Value Decomposition
    """
    # get the weight parameters
    weight_tensor = layer.module.inputs[1].eval(session=layer.model)
    # Conv2d weight shape in TensorFlow  [kh, kw, Nic, Noc]
    # re order in the common shape  [Noc, Nic, kh, kw]
    weight_tensor = np.transpose(weight_tensor, (3, 2, 0, 1))
    out_channels, in_channels, height, width = weight_tensor.shape
    h, v = SpatialSvdPruner.lingalg_spatial_svd(weight_tensor, rank, in_channels, out_channels, height, width)
    # h, v matrices are in the common shape [Noc, Nic, kh, kw]
    # re order in TensorFlow Conv2d shape [kh, kw, Nic, Noc]
    h = np.transpose(h, (2, 3, 1, 0))
    v = np.transpose(v, (2, 3, 1, 0))
    return h, v