Example #1
0
def default_validate_gate(gate_base_dir, validation_processor_configs):
    model = torch.load(
        os.path.join(gate_base_dir, 'reproducibility', 'model.pt'),
        map_location=torch.device(TorchUtils.get_accelerator_type()))
    results = torch.load(
        os.path.join(gate_base_dir, 'reproducibility', "results.pickle"),
        map_location=torch.device(TorchUtils.get_accelerator_type()))
    experiment_configs = load_configs(
        os.path.join(gate_base_dir, 'reproducibility', 'configs.yaml'))

    results_dir = init_dirs(gate_base_dir, is_main=True)

    criterion = manager.get_criterion(experiment_configs["algorithm"])

    waveform_transforms = transforms.Compose([
        PlateausToPoints(
            experiment_configs['processor']["data"]['waveform']
        ),  # Required to remove plateaus from training because the perceptron cannot accept less than 10 values for each gate
        PointsToPlateaus(validation_processor_configs["data"]["waveform"])
    ])

    validate_gate(model,
                  results,
                  validation_processor_configs,
                  criterion,
                  results_dir=results_dir,
                  transforms=waveform_transforms)
Example #2
0
def validate_vcdim(vcdim_base_dir, validation_processor_configs, is_main=True):
    base_dir = init_dirs(vcdim_base_dir, is_main=is_main)
    dirs = [
        os.path.join(vcdim_base_dir, o) for o in os.listdir(vcdim_base_dir)
        if os.path.isdir(os.path.join(vcdim_base_dir, o))
    ]

    for d in dirs:
        if os.path.split(d)[1] != "validation":
            gate_dir = create_directory(
                os.path.join(base_dir,
                             d.split(os.path.sep)[-1]))
            model = torch.load(os.path.join(d, 'reproducibility', 'model.pt'),
                               map_location=torch.device(
                                   TorchUtils.get_accelerator_type()))
            results = torch.load(
                os.path.join(d, 'reproducibility', "results.pickle"),
                map_location=torch.device(TorchUtils.get_accelerator_type()))
            experiment_configs = load_configs(
                os.path.join(d, 'reproducibility', "configs.yaml"))
            #results_dir = init_dirs(d, is_main=is_main)

            criterion = manager.get_criterion(experiment_configs["algorithm"])

            waveform_transforms = transforms.Compose([
                PlateausToPoints(
                    experiment_configs['processor']["data"]['waveform']
                ),  # Required to remove plateaus from training because the perceptron cannot accept less than 10 values for each gate
                PointsToPlateaus(
                    validation_processor_configs["data"]["waveform"])
            ])

            # validate_gate(os.path.join(d, "reproducibility"), base_dir, is_main=False)
            validate_gate(model,
                          results,
                          validation_processor_configs,
                          criterion,
                          results_dir=gate_dir,
                          transforms=waveform_transforms,
                          is_main=False)
Example #3
0
    plt.xlabel("Accuracy values")
    plt.ylabel("Counts")
    plt.savefig(os.path.join(save_dir, "accuracy_histogram_" + label + "." + extension))

    if show_plots:
        plt.show()


if __name__ == "__main__":

    from torchvision import transforms

    from brainspy.utils import manager
    from brainspy.utils.io import load_configs
    from brainspy.utils.transforms import DataToTensor, DataToVoltageRange
    from brainspy.processors.dnpu import DNPU

    V_MIN = [-1.2, -1.2]
    V_MAX = [0.6, 0.6]

    transforms = transforms.Compose(
        [DataToVoltageRange(V_MIN, V_MAX, -1, 1), DataToTensor(torch.device('cpu'))]
    )

    configs = load_configs("configs/ring.yaml")

    criterion = manager.get_criterion(configs["algorithm"])
    algorithm = manager.get_algorithm(configs["algorithm"])

    search_solution(configs, DNPU, criterion, algorithm, transforms=transforms)