Exemplo n.º 1
0
def random_grid_model(dim):
    layer_grid = nx.create_empty_copy(nx.to_directed(nx.grid_2d_graph(dim[0], dim[1])))
    for node in layer_grid.nodes.values():
        if global_vars.get('simple_start'):
            node['layer'] = IdentityLayer()
        else:
            node['layer'] = random_layer()
    layer_grid.add_node('input')
    layer_grid.nodes['input']['layer'] = IdentityLayer()
    if global_vars.get('grid_as_ensemble'):
        for row in range(dim[0]):
            layer_grid.add_node(f'output_conv_{row}')
            layer_grid.nodes[f'output_conv_{row}']['layer'] = IdentityLayer()
            layer_grid.add_edge((row, dim[1] - 1), f'output_conv_{row}')
    else:
        layer_grid.add_node('output_conv')
        layer_grid.nodes['output_conv']['layer'] = IdentityLayer()
        layer_grid.add_edge((0, dim[1]-1), 'output_conv')
    layer_grid.add_edge('input', (0, 0))
    for i in range(dim[1]-1):
        layer_grid.add_edge((0, i), (0, i+1))
    layer_grid.graph['height'] = dim[0]
    layer_grid.graph['width'] = dim[1]
    if global_vars.get('parallel_paths_experiment'):
        set_parallel_paths(layer_grid)
    if check_legal_grid_model(layer_grid):
        return layer_grid
    else:
        return random_grid_model(dim)
Exemplo n.º 2
0
def mutate_models(individual, mutation_rate):
    model = individual['model']
    if random.random() < mutation_rate:
        while True:
            rand_layer = random.randint(0, len(model) - 1)
            model[rand_layer] = random_layer()
            if check_legal_model(model):
                break
Exemplo n.º 3
0
def mutate_layers_deap(individual):
    while True:
        rand_layer = random.randint(0, len(individual['model']) - 1)
        prev_layer = individual['model'][rand_layer]
        individual['model'][rand_layer] = random_layer()
        if check_legal_model(individual['model']):
            break
        else:
            individual[rand_layer] = prev_layer
    return individual,
Exemplo n.º 4
0
def mutate_modules_deap(individual):
    rand_layer = random.randint(0, len(individual) - 1)
    individual[rand_layer] = random_layer()
    return individual,
Exemplo n.º 5
0
def mutate_layer(model, layer_index):
    old_layer = model[layer_index]
    model[layer_index] = random_layer()
    if not check_legal_model(model):
        model[layer_index] = old_layer