Beispiel #1
0
def run_test_using_image_net():
    exec_param_w_prune = ExecParams(n_pretrain_epoch=10,
                                    n_epoch_retrain=3,
                                    n_epoch_total=20,
                                    pruner=TaylorExpansionFilterPruner)
    pruning_param_w_prune = PruningParams(max_percent_per_iteration=0.2,
                                          prune_ratio=0.2)

    transform = transforms.Compose([
        transforms.Resize((224, 224)),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406],
                             std=[0.229, 0.224, 0.225])
    ])

    train_dataset = torchvision.datasets.ImageFolder("TrainPATH",
                                                     transform=transform)
    test_dataset = torchvision.datasets.ImageFolder("TestPATH",
                                                    transform=transform)
    dataset_params = DatasetParams(transform, train_dataset, test_dataset)

    multi_history = MultiHistory()
    h, s = exec_resnet18(pruning_params=pruning_param_w_prune,
                         exec_params=exec_param_w_prune,
                         dataset_params=dataset_params)
    multi_history.append_history("Resnet18 20%", h)
    multi_history.display_single_key(History.VAL_ACC_KEY, title="Image_net")
Beispiel #2
0
def run_fast_validation(dataset_params):
    multi_history = MultiHistory()
    exec_param = ExecParams(n_pretrain_epoch=1,
                            n_epoch_retrain=1,
                            n_epoch_total=3,
                            pruner=ActivationMeanFilterPruner)

    exec_name = "Alexnet test"
    h, s = exec_alexnet(exec_name,
                        PruningParams(max_percent_per_iteration=0.2,
                                      prune_ratio=0.2),
                        exec_params=exec_param,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY, title="TEST_RUN")
Beispiel #3
0
def run_alex_prune_compare_soft(dataset_params):
    multi_history = MultiHistory()
    exec_param = ExecParams(n_pretrain_epoch=3,
                            n_epoch_retrain=1,
                            n_epoch_total=15,
                            pruner=TaylorExpansionFilterPruner)
    exec_param_no_prune = ExecParams(n_pretrain_epoch=0,
                                     n_epoch_retrain=0,
                                     n_epoch_total=15,
                                     pruner=TaylorExpansionFilterPruner)

    exec_name = "Alexnet 0%"
    h, s = exec_alexnet(exec_name,
                        PruningParams(max_percent_per_iteration=0.0,
                                      prune_ratio=None),
                        exec_params=exec_param_no_prune,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)

    exec_name = "Alexnet 10%"
    h, s = exec_alexnet(exec_name,
                        PruningParams(max_percent_per_iteration=0.01,
                                      prune_ratio=0.1),
                        exec_params=exec_param,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)

    exec_name = "Alexnet 30%"
    h, s = exec_alexnet(exec_name,
                        PruningParams(max_percent_per_iteration=0.03,
                                      prune_ratio=0.3),
                        exec_params=exec_param,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)

    exec_name = "Alexnet 50%"
    h, s = exec_alexnet(exec_name,
                        PruningParams(max_percent_per_iteration=0.05,
                                      prune_ratio=0.5),
                        exec_params=exec_param,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)

    exec_name = "Alexnet 75%"
    h, s = exec_alexnet(exec_name,
                        PruningParams(max_percent_per_iteration=0.075,
                                      prune_ratio=0.75),
                        exec_params=exec_param,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    save_obj(multi_history, "history_alex_soft")
    multi_history.display_single_key(
        History.VAL_ACC_KEY, title="Comparing AlexNet by Level of Pruning")
Beispiel #4
0
def run_strategy_prune_compare(dataset_params):
    exec_param_no_prune_large = ExecParams(n_pretrain_epoch=0,
                                           n_epoch_retrain=0,
                                           n_epoch_total=15,
                                           batch_size=16,
                                           pruner=TaylorExpansionFilterPruner)
    exec_param_no_prune_medium = ExecParams(n_pretrain_epoch=0,
                                            n_epoch_retrain=0,
                                            n_epoch_total=15,
                                            batch_size=32,
                                            pruner=TaylorExpansionFilterPruner)
    exec_param_w_prune_large = ExecParams(n_pretrain_epoch=5,
                                          n_epoch_retrain=1,
                                          n_epoch_total=15,
                                          batch_size=16,
                                          pruner=TaylorExpansionFilterPruner)
    exec_param_w_prune_medium = ExecParams(n_pretrain_epoch=5,
                                           n_epoch_retrain=1,
                                           n_epoch_total=15,
                                           batch_size=32,
                                           pruner=TaylorExpansionFilterPruner)
    exec_param_no_prune = ExecParams(n_pretrain_epoch=0,
                                     n_epoch_retrain=0,
                                     n_epoch_total=15,
                                     batch_size=64,
                                     pruner=TaylorExpansionFilterPruner)
    exec_param_w_prune = ExecParams(n_pretrain_epoch=5,
                                    n_epoch_retrain=1,
                                    n_epoch_total=15,
                                    batch_size=64,
                                    pruner=TaylorExpansionFilterPruner)
    exec_param_w_prune_squeeze = ExecParams(n_pretrain_epoch=5,
                                            n_epoch_retrain=1,
                                            n_epoch_total=15,
                                            batch_size=64,
                                            pruner=TaylorExpansionFilterPruner,
                                            force_forward_view=True)
    pruning_param_no_prune = PruningParams(max_percent_per_iteration=0.0,
                                           prune_ratio=None)
    pruning_param_w_prune = PruningParams(max_percent_per_iteration=0.05,
                                          prune_ratio=0.3)

    multi_history = MultiHistory()
    exec_name = "SqueezeNet-0"
    h, s = exec_squeeze_net(exec_name,
                            pruning_params=pruning_param_no_prune,
                            exec_params=exec_param_no_prune,
                            dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    exec_name = "SqueezeNet-30"
    h, s = exec_squeeze_net(exec_name,
                            pruning_params=pruning_param_w_prune,
                            exec_params=exec_param_w_prune_squeeze,
                            dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")

    exec_name = "densenet 121-0"
    h, s = exec_dense_net(exec_name,
                          pruning_params=pruning_param_no_prune,
                          exec_params=exec_param_no_prune_large,
                          dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    exec_name = "densenet 121-30"
    h, s = exec_dense_net(exec_name,
                          pruning_params=pruning_param_w_prune,
                          exec_params=exec_param_w_prune_large,
                          dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")

    exec_name = "Resnet 50-0"
    h, s = exec_resnet50(exec_name,
                         pruning_params=pruning_param_no_prune,
                         exec_params=exec_param_no_prune_medium,
                         dataset_params=dataset_params,
                         out_count=10)
    multi_history.append_history(exec_name, h)
    exec_name = "Resnet 50-30"
    h, s = exec_resnet50(exec_name,
                         pruning_params=pruning_param_w_prune,
                         exec_params=exec_param_w_prune_medium,
                         dataset_params=dataset_params,
                         out_count=10)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")

    #create a second history since I am not sure it will look nice in one graph
    multi_history2 = MultiHistory()
    exec_name = "vgg16 0"
    h, s = exec_vgg16(exec_name,
                      pruning_params=pruning_param_no_prune,
                      exec_params=exec_param_no_prune_medium,
                      dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history2.append_history(exec_name, h)
    exec_name = "vgg16 30"
    h, s = exec_vgg16(exec_name,
                      pruning_params=pruning_param_w_prune,
                      exec_params=exec_param_w_prune_medium,
                      dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history2.append_history(exec_name, h)

    exec_name = "Resnet 18-0"
    h, s = exec_resnet18(exec_name,
                         pruning_params=pruning_param_no_prune,
                         exec_params=exec_param_no_prune,
                         dataset_params=dataset_params,
                         out_count=10)
    multi_history.append_history(exec_name, h)
    multi_history2.append_history(exec_name, h)
    exec_name = "Resnet 18-30"
    h, s = exec_resnet18(exec_name,
                         pruning_params=pruning_param_w_prune,
                         exec_params=exec_param_w_prune,
                         dataset_params=dataset_params,
                         out_count=10)
    multi_history.append_history(exec_name, h)
    multi_history2.append_history(exec_name, h)

    exec_name = "Alexnet 0"
    h, s = exec_alexnet(exec_name,
                        pruning_params=pruning_param_no_prune,
                        exec_params=exec_param_no_prune,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history2.append_history(exec_name, h)
    exec_name = "Alexnet 30"
    h, s = exec_alexnet(exec_name,
                        pruning_params=pruning_param_w_prune,
                        exec_params=exec_param_w_prune,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history2.append_history(exec_name, h)

    save_obj(multi_history, "history_compare")
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")
    multi_history2.display_single_key(History.VAL_ACC_KEY,
                                      title="Comparing Models at 30% Pruning")
def run_strategy_prune_compare_taylor(dataset_params):
    exec_param_no_prune = ExecParams(n_pretrain_epoch=0,
                                     n_epoch_retrain=0,
                                     n_epoch_total=15,
                                     batch_size=64,
                                     pruner=ActivationMeanFilterPrunerV2)
    exec_param_w_prune_2 = ExecParams(n_pretrain_epoch=5,
                                      n_epoch_retrain=1,
                                      n_epoch_total=15,
                                      batch_size=64,
                                      pruner=TaylorExpansionFilterPrunerV2)
    exec_param_w_prune_3 = ExecParams(
        n_pretrain_epoch=5,
        n_epoch_retrain=1,
        n_epoch_total=15,
        batch_size=64,
        pruner=CompleteTaylorExpansionFilterPruner)
    exec_param_w_prune_4 = ExecParams(
        n_pretrain_epoch=5,
        n_epoch_retrain=1,
        n_epoch_total=15,
        batch_size=64,
        pruner=CompleteTaylorExpansionFilterPruner)
    exec_param_w_prune_t = ExecParams(n_pretrain_epoch=5,
                                      n_epoch_retrain=1,
                                      n_epoch_total=15,
                                      batch_size=64,
                                      pruner=TaylorExpansionFilterPruner)
    exec_param_w_prune_o = ExecParams(n_pretrain_epoch=5,
                                      n_epoch_retrain=1,
                                      n_epoch_total=15,
                                      batch_size=64,
                                      pruner=ActivationMeanFilterPruner)
    pruning_param_no_prune = PruningParams(max_percent_per_iteration=0.0,
                                           prune_ratio=None)
    pruning_param_w_prune = PruningParams(max_percent_per_iteration=0.075,
                                          prune_ratio=0.30)
    pruning_param_w_prune2 = PruningParams(max_percent_per_iteration=0.05,
                                           prune_ratio=0.15)

    multi_history = MultiHistory()

    exec_name = "Squeeze - 30 full"
    h, s = exec_squeeze_net(exec_name,
                            pruning_params=pruning_param_w_prune2,
                            exec_params=exec_param_w_prune_4,
                            dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")
    exec_name = "Squeeze - 30 Simple"
    h, s = exec_squeeze_net(exec_name,
                            pruning_params=pruning_param_w_prune,
                            exec_params=exec_param_w_prune_o,
                            dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")

    # exec_name = "Resnet 18-0"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # exec_name = "Resnet 18-30-Simple_prune"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_o,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
    # exec_name = "Resnet 18-30-v2"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_2,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
    # exec_name = "Resnet 18-30-v3"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_3,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
    # exec_name = "Resnet 18-30-v3-2"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune2, exec_params=exec_param_w_prune_3,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
    # exec_name = "Resnet 18-30-v4-p1"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_4,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
    # exec_name = "Resnet 18-30-v4-p2"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune2, exec_params=exec_param_w_prune_4,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)
    # multi_history.display_single_key(History.VAL_ACC_KEY, title="Comparing Models at 30% Pruning")
    # exec_name = "Resnet 18-30-Taylor"
    # h, s = exec_resnet18(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune_t,
    #                   dataset_params=dataset_params, out_count=10)
    # multi_history.append_history(exec_name, h)

    # exec_name = "Alexnet 0"
    # h, s = exec_alexnet(exec_name, pruning_params=pruning_param_no_prune, exec_params=exec_param_no_prune,
    #                  dataset_params=dataset_params)
    # multi_history.append_history(exec_name, h)
    # exec_name = "Alexnet 30"
    # h, s = exec_alexnet(exec_name, pruning_params=pruning_param_w_prune, exec_params=exec_param_w_prune,
    #                  dataset_params=dataset_params)
    # multi_history.append_history(exec_name, h)

    save_obj(multi_history, "history_compare")
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Comparing Models at 30% Pruning")
def train_models(dataset_params):
    pruning_param_no_prune = PruningParams(max_percent_per_iteration=0.0,
                                           prune_ratio=None)
    exec_param_no_prune = ExecParams(n_pretrain_epoch=0,
                                     n_epoch_retrain=0,
                                     n_epoch_total=15,
                                     batch_size=32,
                                     pruner=None)

    multi_history = MultiHistory()

    exec_name = "AlexNet-base"
    h, s = exec_alexnet(exec_name,
                        pruning_params=pruning_param_no_prune,
                        exec_params=exec_param_no_prune,
                        dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")

    exec_name = "ResNet18-base"
    h, s = exec_resnet18(exec_name,
                         pruning_params=pruning_param_no_prune,
                         exec_params=exec_param_no_prune,
                         dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")

    exec_name = "ResNet34-base"
    h, s = exec_resnet34(exec_name,
                         pruning_params=pruning_param_no_prune,
                         exec_params=exec_param_no_prune,
                         dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")

    exec_name = "ResNet50-base"
    h, s = exec_resnet50(exec_name,
                         pruning_params=pruning_param_no_prune,
                         exec_params=exec_param_no_prune,
                         dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")

    exec_name = "Squeeze-base"
    h, s = exec_squeeze_net(exec_name,
                            pruning_params=pruning_param_no_prune,
                            exec_params=exec_param_no_prune,
                            dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")

    exec_name = "DenseNet121-base"
    h, s = exec_dense_net(exec_name,
                          pruning_params=pruning_param_no_prune,
                          exec_params=exec_param_no_prune,
                          dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")

    exec_name = "VGG16-base"
    h, s = exec_vgg16(exec_name,
                      pruning_params=pruning_param_no_prune,
                      exec_params=exec_param_no_prune,
                      dataset_params=dataset_params)
    multi_history.append_history(exec_name, h)
    multi_history.display_single_key(History.VAL_ACC_KEY,
                                     title="Models training without pruning")