Example #1
0
        tnt.joint(model=ppnet_multi, log=log)
        joint_lr_scheduler.step()
        _ = tnt.train(model=ppnet_multi,
                      dataloader=train_loader,
                      optimizer=joint_optimizer,
                      class_specific=class_specific,
                      coefs=coefs,
                      log=log)

    accu = tnt.test(model=ppnet_multi,
                    dataloader=test_loader,
                    class_specific=class_specific,
                    log=log)
    save.save_model_w_condition(model=ppnet,
                                model_dir=model_dir,
                                model_name=str(epoch) + 'nopush',
                                accu=accu,
                                target_accu=0.70,
                                log=log)

    if epoch >= push_start and epoch in push_epochs:
        push.push_prototypes(
            train_push_loader,  # pytorch dataloader (must be unnormalized in [0,1])
            prototype_network_parallel=
            ppnet_multi,  # pytorch network with prototype_vectors
            class_specific=class_specific,
            preprocess_input_function=
            preprocess_input_function,  # normalize if needed
            prototype_layer_stride=1,
            root_dir_for_saving_prototypes=
            img_dir,  # if not None, prototypes will be saved here
            epoch_number=
Example #2
0
    prune_threshold=prune_threshold,
    preprocess_input_function=preprocess_input_function,  # normalize
    original_model_dir=original_model_dir,
    epoch_number=epoch,
    #model_name=None,
    log=log,
    copy_prototype_imgs=True)
accu = tnt.test(model=ppnet_multi,
                dataloader=test_loader,
                dataloader1=inst_loader,
                class_specific=class_specific,
                log=log)
save.save_model_w_condition(model=ppnet,
                            model_dir=model_dir,
                            model_name=original_model_name.split('push')[0] +
                            'prune',
                            accu=accu,
                            target_accu=0.70,
                            log=log)

# last layer optimization
if optimize_last_layer:
    last_layer_optimizer_specs = [{
        'params': ppnet.last_layer.parameters(),
        'lr': 1e-4
    }]
    last_layer_optimizer = torch.optim.Adam(last_layer_optimizer_specs)

    coefs = {
        'crs_ent': 1,
        'clst': 0.8,
Example #3
0
                prototype_original_img_filename_prefix,
                proto_bound_boxes_filename_prefix=
                proto_bound_boxes_filename_prefix,
                save_prototype_class_identity=True,
                log=log)

            acc, _ = tnt.valid(model=vgg_multi,
                               dataloader=valid_loader,
                               label2name=label2name,
                               args=args,
                               class_specific=class_specific,
                               log=log)

            save.save_model_w_condition(model=vgg,
                                        model_dir=model_dir,
                                        model_name='best_model_protos_opt',
                                        accu=acc,
                                        target_accu=best_acc,
                                        log=log)

            is_best = acc > best_acc
            best_acc = max(acc, best_acc)
            if is_best:
                best_epoch = epoch

            tnt.last_layers(model=vgg_multi, log=log)
            _ = tnt.train(model=vgg_multi,
                          dataloader=train_loader,
                          label2name=label2name,
                          optimizer=last_layers_optimizer,
                          args=args,
                          class_specific=class_specific,
Example #4
0
    prune_threshold=prune_threshold,
    preprocess_input_function=preprocess_input_function,  # normalize
    original_model_dir=original_model_dir,
    epoch_number=epoch,
    # model_name=None,
    log=log,
    copy_prototype_imgs=True,
)
accu = tnt.test(model=ppnet_multi,
                dataloader=test_loader,
                class_specific=class_specific,
                log=log)
save.save_model_w_condition(
    model=ppnet,
    model_dir=model_dir,
    model_name=original_model_name.split("push")[0] + "prune",
    accu=accu,
    target_accu=0.70,
    log=log,
)

# last layer optimization
if optimize_last_layer:
    last_layer_optimizer_specs = [{
        "params": ppnet.last_layer.parameters(),
        "lr": 1e-4
    }]
    last_layer_optimizer = torch.optim.Adam(last_layer_optimizer_specs)

    coefs = {
        "crs_ent": 1,
        "clst": 0.8,