コード例 #1
0
ファイル: mutation.py プロジェクト: PetraVidnerova/AnANAS
    def mutateLayer(self, individual):
        """ Mutate the given layer by randomly chosen mutation. """

        layers = individual.conv_layers + individual.dense_layers
        # select layer random
        l = random.randint(0, len(layers) - 1)
        layer = layers[l]

        if type(layer) is Layer:
            mutfunc = roulette([
                self.mutateSize, self.mutateDropout, self.mutateActivation,
                self.randomInit
            ], [
                PROB_CHANGE_LAYER_SIZE, PROB_CHANGE_DROPOUT,
                PROB_CHANGE_ACTIVATION, PROB_CHANGE_ALL
            ])
            if mutfunc:
                mutfunc(layer)
        elif type(layer) is ConvLayer:
            mutfunc = roulette([
                self.mutateFilters, self.mutateKernelSize,
                self.mutateActivation, self.randomInit
            ], [
                PROB_CHANGE_NUM_FILTERS, PROB_MUTATE_KERNEL_SIZE,
                PROB_CHANGE_CONV_ACTIVATION, PROB_CHANGE_CONV_ALL
            ])
            if mutfunc:
                mutfunc(layer)
        elif type(layer) is MaxPoolLayer:
            self.mutatePoolSize(layer)
        else:
            raise (TypeError("unknown type of layer"))

        return individual,
コード例 #2
0
    def mutateSize(self, layer):

        mutfunc = roulette(
            [self.changeSize, self.addNeuron, self.delNeuron],
            [PROB_RANDOM_LAYER_SIZE, PROB_ADD_NEURON, PROB_DEL_NEURON])
        if mutfunc:
            mutfunc(layer)
コード例 #3
0
def createRandomLayer():

    create = roulette([lambda: ConvLayer(), lambda: MaxPoolLayer()],
                      [Config.CONV_LAYER, Config.MAX_POOL_LAYER])
    if create:
        return create()
    else:
        return ConvLayer()
コード例 #4
0
ファイル: mutation.py プロジェクト: PetraVidnerova/AnANAS
    def mutateSize(self, layer):
        """ Mutates size of the layer, chooses randomly from relevant mutations. """

        mutfunc = roulette(
            [self.changeSize, self.addNeuron, self.delNeuron],
            [PROB_RANDOM_LAYER_SIZE, PROB_ADD_NEURON, PROB_DEL_NEURON])
        if mutfunc:
            mutfunc(layer)
コード例 #5
0
    def mutate(self, individual):

        mutfunc = roulette([self.mutateLayer, self.addLayer, self.delLayer],
                           [PROB_MUTATE_LAYER, PROB_ADD_LAYER, PROB_DEL_LAYER])
        if mutfunc:
            return mutfunc(individual)

        return individual,
コード例 #6
0
ファイル: mutation.py プロジェクト: PetraVidnerova/AnANAS
    def mutate(self, individual):
        """ Mutate the network with one randomly selected mutation. """

        mutfunc = roulette([self.mutateLayer, self.addLayer, self.delLayer],
                           [PROB_MUTATE_LAYER, PROB_ADD_LAYER, PROB_DEL_LAYER])
        if mutfunc:
            return mutfunc(individual)

        return individual,
コード例 #7
0
ファイル: mutation.py プロジェクト: PetraVidnerova/AnANAS
    def mutate(self, individual):
        """ Selects mutation type at random and applies it. """

        mutfunc = roulette([self.mutateLayer, self.addLayer, self.delLayer],
                           [PROB_MUTATE_LAYER, PROB_ADD_LAYER, PROB_DEL_LAYER])
        if mutfunc:
            return mutfunc(individual)

        return individual,
コード例 #8
0
ファイル: convindividual.py プロジェクト: JiriVanek/GAKeras
def createRandomLayer():

    create = roulette([lambda: ConvLayer(),
                       lambda: MaxPoolLayer()],
                      [Config.CONV_LAYER, Config.MAX_POOL_LAYER])
    if create:
        return create()
    else:
        return ConvLayer() 
コード例 #9
0
def createRandomLayer():

    create = roulette([lambda: ConvLayer(), lambda: MaxPoolLayer()], [
        config.global_config["network"]["conv_layer"],
        config.global_config["network"]["max_pool_layer"]
    ])
    if create:
        return create()
    else:
        return ConvLayer()
コード例 #10
0
    def mutate(self, individual):

        mutfunc = roulette([self.mutateLayer, self.addLayer, self.delLayer],
                           [PROB_MUTATE_LAYER, PROB_ADD_LAYER, PROB_DEL_LAYER])
        if mutfunc:
            return mutfunc(individual)

        assert len(individual.layers) == len(individual.strategy.blocks)

        return individual,
コード例 #11
0
ファイル: mutation_es.py プロジェクト: JiriVanek/GAKeras
    def mutate(self, individual): 

        mutfunc = roulette([self.mutateLayer, self.addLayer, self.delLayer],
                           [PROB_MUTATE_LAYER, PROB_ADD_LAYER, PROB_DEL_LAYER])
        if mutfunc:
            return mutfunc(individual)

        assert len(individual.layers) == len(individual.strategy.blocks)
        
        return individual, 
コード例 #12
0
ファイル: mutation_es.py プロジェクト: JiriVanek/GAKeras
    def mutateLayer(self, individual):

        # select layer random 
        l = random.randint(0, len(individual.layers)-1)
        layer = individual.layers[l]
        strategy = individual.strategy.blocks[l]
        
        mutfunc = roulette([self.mutateSize, self.mutateDropout, self.mutateActivation],
                           [PROB_CHANGE_LAYER_SIZE, PROB_CHANGE_DROPOUT, PROB_CHANGE_ACTIVATION])

        if mutfunc:
            mutfunc(layer, strategy, len(individual.layers))
        
        return individual,
コード例 #13
0
    def mutateLayer(self, individual):

        # select layer random
        l = random.randint(0, len(individual.layers) - 1)
        layer = individual.layers[l]
        strategy = individual.strategy.blocks[l]

        mutfunc = roulette(
            [self.mutateSize, self.mutateDropout, self.mutateActivation], [
                PROB_CHANGE_LAYER_SIZE, PROB_CHANGE_DROPOUT,
                PROB_CHANGE_ACTIVATION
            ])

        if mutfunc:
            mutfunc(layer, strategy, len(individual.layers))

        return individual,
コード例 #14
0
ファイル: mutation.py プロジェクト: PetraVidnerova/AnANAS
    def mutateLayer(self, individual):
        """ Selects random layer and applies randomly selected
        mutation on it. """

        # select layer random
        l = random.randint(0, len(individual.layers) - 1)
        layer = individual.layers[l]

        mutfunc = roulette([
            self.mutateSize, self.mutateDropout, self.mutateActivation,
            self.randomInit
        ], [
            PROB_CHANGE_LAYER_SIZE, PROB_CHANGE_DROPOUT,
            PROB_CHANGE_ACTIVATION, PROB_CHANGE_ALL
        ])

        if mutfunc:
            mutfunc(layer)

        return individual,