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
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)
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()
def selection_chances(fitness_fn, population): fitnesses = map(fitness_fn, population) return weighted_sampler(population, fitnesses)
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()
def select(r, population, fitness_fn): fitnesses = map(fitness_fn, population) sampler = weighted_sampler(population, fitnesses) return [sampler() for i in range(r)]