Example #1
0
File: DCC.py Project: glcLucky/DCC
def test(testloader, net, criterion, epoch, use_cuda, _delta, pairs, numeval,
         flag, logger, viz_method):
    net.eval()

    original = []
    features = []
    labels = []

    for batch_idx, (inputs, targets) in enumerate(testloader):
        if use_cuda:
            inputs = inputs.cuda()
        with torch.no_grad():
            inputs_Var = Variable(inputs)
            enc, dec = net(inputs_Var)
            features += list(enc.data.cpu().numpy())
            labels += list(targets)
            original += list(inputs.cpu().numpy())

    original, features, labels = np.asarray(original).astype(np.float32), np.asarray(features).astype(np.float32), \
                                  np.asarray(labels)

    U = criterion.U.data.cpu().numpy()

    change_in_assign = 0
    assignment = -np.ones(len(labels))

    if logger and epoch % 3 == 0:
        logger.log_images('representatives',
                          plot_to_image(U, 'representatives', viz_method),
                          epoch)

    # logs clustering measures only if sigma2 has reached the minimum (delta2)
    if flag:
        index, ari, ami, nmi, acc, n_components, assignment = computeObj(
            U, pairs, _delta, labels, numeval)

        # log to TensorBoard
        change_in_assign = np.abs(oldassignment - index).sum()
        if logger:
            logger.log_value('ARI', ari, epoch)
            logger.log_value('AMI', ami, epoch)
            logger.log_value('NMI', nmi, epoch)
            logger.log_value('ACC', acc, epoch)
            logger.log_value('Numcomponents', n_components, epoch)
            logger.log_value('labeldiff', change_in_assign, epoch)

        oldassignment[...] = index

    return features, U, change_in_assign, assignment
Example #2
0
def test(testloader, net, criterion, epoch, use_cuda, _delta, pairs, numeval,
         flag):
    net.eval()

    original = []
    features = []
    labels = []

    for batch_idx, (inputs, targets) in enumerate(testloader):
        if use_cuda:
            inputs = inputs.cuda()
        inputs_Var = Variable(inputs, volatile=True)
        enc, dec = net(inputs_Var)
        features += list(enc.data.cpu().numpy())
        labels += list(targets)
        original += list(inputs.cpu().numpy())

    original, features, labels = np.asarray(original).astype(np.float32), np.asarray(features).astype(np.float32), \
                                  np.asarray(labels)

    U = criterion.U.data.cpu().numpy()

    change_in_assign = 0
    # logs clustering measures only if sigma2 has reached the minimum (delta2)
    if flag:
        index, ari, ami, nmi, acc, n_components = computeObj(
            U, pairs, _delta, labels, numeval)

        # log to TensorBoard
        change_in_assign = np.abs(oldassignment - index).sum()
        if args.tensorboard:
            log_value('ARI', ari, epoch)
            log_value('AMI', ami, epoch)
            log_value('NMI', nmi, epoch)
            log_value('ACC', acc, epoch)
            log_value('Numcomponents', n_components, epoch)
            log_value('labeldiff', change_in_assign, epoch)

        oldassignment[...] = index

    return features, U, change_in_assign