def METHOD_NAME(
        label_num,
        epoch=50,
        lambda1=1,
        lambda2=2,
        lr=0.001,
        verbose=False):
    coae = CoAE(label_num, )
    labels = torch.eye(label_num)
    opt = torch.optim.Adam(coae.parameters(), lr=lr)
    for i in range(epoch):
        opt.zero_grad()
        fake_labels = coae.encode(labels)
        reconstruct_labels = coae.decode(fake_labels)
        loss = coae_loss(
            labels,
            fake_labels,
            reconstruct_labels,
            lambda1,
            lambda2,
            verbose=verbose)
        loss.backward()
        opt.step()
    if verbose:
        LOGGER.debug(
            'origin labels {}, fake labels {}, reconstruct labels {}'.format(
                labels, coae.encode(labels).detach().numpy(), coae.decode(
                    coae.encode(labels)).detach().numpy()))
    return coae