Пример #1
0
def get_dataloader(
        split: str = 'train',
        dataset_args: dict = {},
        dataloader_args: dict = {},
        weighted_sampling: Optional[bool] = False
) -> torch.utils.data.DataLoader:
    """Loads dataloaders for the PE CT dataset.

    Args:
        split (str, optional): the split with which to filter the CSV.
        dataset_args (dict, optional): keyword arguments for dataset init.
        dataloader_args (dict): keyword arguments for dataloader init.
        weighted_sampling (bool, optional): 
    Returns:
        a pytorch dataloader
    """

    dataset = RSNADataset(split=split, **dataset_args)

    # weighted sampling
    if weighted_sampling and split == 'train':
        sampler = utils.weighted_sampler(dataset)
        dataloader_args['shuffle'] = False
        dataloader = DataLoader(dataset, sampler=sampler, **dataloader_args)
    else:
        dataloader = DataLoader(dataset, **dataloader_args)

    return dataloader
Пример #2
0
def genetic_algorithm(population,
                      fitness_fn,
                      gene_pool=[0, 1],
                      f_thres=None,
                      ngen=1000,
                      pmut=0.1):  # noqa
    """[Figure 4.8]"""
    for i in range(ngen):
        new_population = []
        fitnesses = map(fitness_fn, population)
        random_selection = weighted_sampler(population, fitnesses)
        for j in range(len(population)):
            x = random_selection()
            y = random_selection()
            child = reproduce(x, y)
            if random.uniform(0, 1) < pmut:
                child = mutate(child, gene_pool)
            new_population.append(child)

        population = new_population

        if f_thres:
            fittest_individual = argmax(population, key=fitness_fn)
            if fitness_fn(fittest_individual) >= f_thres:
                return fittest_individual

    return argmax(population, key=fitness_fn)
Пример #3
0
 def sample(self):
     """Return a random sample from the distribution."""
     if self.sampler is None:
         self.sampler = weighted_sampler(list(self.dictionary.keys()),
                                         list(self.dictionary.values()))
     return self.sampler()
Пример #4
0
def selection_chances(fitness_fn, population):
    fitnesses = map(fitness_fn, population)
    return weighted_sampler(population, fitnesses)
Пример #5
0
 def sample(self):
     "Return a random sample from the distribution."
     if self.sampler is None:
         self.sampler = weighted_sampler(list(self.dictionary.keys()),
                                         list(self.dictionary.values()))
     return self.sampler()
Пример #6
0
def select(r, population, fitness_fn):
    fitnesses = map(fitness_fn, population)
    sampler = weighted_sampler(population, fitnesses)
    return [sampler() for i in range(r)]