Example #1
0
 def __init__(self, numero_entradas_rams, tamanho_entrada, numero_discriminadores, score_minimo, intervalo_crescimento):
     self.retina = retina.Retina(tamanho_entrada)
     self.discriminadores = []
     self.numero_discriminadores = numero_discriminadores
     self.numero_entradas_rams = numero_entradas_rams
     self.tamanho_entrada = tamanho_entrada
     self.score_minimo = score_minimo
     self.intervalo_crescimento = intervalo_crescimento
     
     for i in range(0, numero_discriminadores):
         self.discriminadores.append(discriminador_cluswisard.DiscriminadorCluswisard(numero_entradas_rams, tamanho_entrada, i))
     self.classificacao_discriminadores = [0]*numero_discriminadores
Example #2
0
    def treinar(self, entrada, classe):
        entrada_reorganizada = self.retina.organizar(entrada)
        exemplo_aprendido = False

        if (not (self.possui_classe(classe))):
            #print("passei aqui, onde tem label, mas não tem classe. fala tu")
            self.discriminadores.append(
                discriminador_cluswisard.DiscriminadorCluswisard(
                    self.numero_entradas_rams, self.tamanho_entrada, classe))
            self.numero_discriminadores = self.numero_discriminadores + 1
            self.discriminadores[self.numero_discriminadores -
                                 1].treinar(entrada_reorganizada)
            self.discriminadores[self.numero_discriminadores -
                                 1].exemplos_aprendidos += 1
        else:
            for i in range(0, self.numero_discriminadores):
                if ((self.discriminadores[i].classe == classe)
                        and (self.obter_score(
                            self.discriminadores[i].classificar_score(entrada))
                             >= min([
                                 1, self.score_minimo +
                                 self.discriminadores[i].exemplos_aprendidos /
                                 self.intervalo_crescimento
                             ]))):
                    self.discriminadores[i].treinar(entrada_reorganizada)
                    self.discriminadores[i].exemplos_aprendidos += 1
                    exemplo_aprendido = True

            if (not (exemplo_aprendido) and
                    self.quantidade_classe_repetida(classe) <= self.limitante):
                self.discriminadores.append(
                    discriminador_cluswisard.DiscriminadorCluswisard(
                        self.numero_entradas_rams, self.tamanho_entrada,
                        classe))
                self.numero_discriminadores = self.numero_discriminadores + 1
                self.discriminadores[self.numero_discriminadores -
                                     1].treinar(entrada_reorganizada)
                self.discriminadores[self.numero_discriminadores -
                                     1].exemplos_aprendidos += 1
Example #3
0
 def treinar_cluster(self, entrada):
     placar_discriminadores = self.obter_classificacoes(entrada, 0)
     melhor_resultado = self.obter_melhor_resultado(placar_discriminadores)
     discriminador = placar_discriminadores.index(melhor_resultado)
     
     if(melhor_resultado >= min([1, self.score_minimo+
                             self.discriminadores[discriminador].exemplos_aprendidos/self.intervalo_crescimento])):
       self.treinar(entrada, discriminador)
     else:
         self.discriminadores.append[discriminador_cluswisard.DiscriminadorCluswisard(self.numero_entradas_rams,
                                                                                      self.tamanho_entrada, self.discriminadores[discriminador].classe)]
         self.numero_discriminadores = self.numero_discriminadores + 1
         self.treinar(entrada, self.numero_discriminadores)
Example #4
0
    def treinar_cluster(self, entrada, item):
        entrada_reorganizada = self.retina.organizar(entrada)

        if (self.numero_discriminadores == 0):
            self.discriminadores.append(
                discriminador_cluswisard.DiscriminadorCluswisard(
                    self.numero_entradas_rams, self.tamanho_entrada, 0))
            self.clusters.append([])
            self.numero_discriminadores = self.numero_discriminadores + 1
            self.discriminadores[0].treinar(entrada_reorganizada)
            self.discriminadores[0].exemplos_aprendidos += 1
            self.clusters[0].append(item)
        if (self.numero_discriminadores > 0):
            placar_discriminadores = self.obter_classificacoes(entrada, 0)
            melhor_resultado = self.obter_melhor_resultado(
                placar_discriminadores)
            discriminador = placar_discriminadores.index(melhor_resultado)

            if (melhor_resultado >= min([
                    1, self.score_minimo +
                    self.discriminadores[discriminador].exemplos_aprendidos /
                    self.intervalo_crescimento
            ])):
                self.discriminadores[discriminador].treinar(
                    entrada_reorganizada)
                self.discriminadores[discriminador].exemplos_aprendidos += 1
                self.clusters[discriminador].append(item)
            else:
                self.discriminadores.append(
                    discriminador_cluswisard.DiscriminadorCluswisard(
                        self.numero_entradas_rams, self.tamanho_entrada,
                        self.discriminadores[discriminador].classe))
                self.clusters.append([])
                self.numero_discriminadores = self.numero_discriminadores + 1
                self.discriminadores[self.numero_discriminadores -
                                     1].treinar(entrada_reorganizada)
                self.discriminadores[self.numero_discriminadores -
                                     1].exemplos_aprendidos += 1
                self.clusters[self.numero_discriminadores - 1].append(item)
Example #5
0
    def treinar_cluster(self, entrada):
        entrada_reorganizada = self.retina.organizar(entrada)
        exemplo_aprendido = False

        if (self.numero_discriminadores > 0):
            placar_discriminadores = self.obter_classificacoes(entrada, 0)
            melhor_resultado = self.obter_melhor_resultado(
                placar_discriminadores)
            discriminador = placar_discriminadores.index(melhor_resultado)
            classe = self.discriminadores[discriminador].classe

            for i in range(0, self.numero_discriminadores):
                if ((self.discriminadores[i].classe == classe) and
                    (self.obter_score(
                        self.discriminadores[i].classificar_score(entrada)) >=
                     min([
                         1, self.score_minimo +
                         self.discriminadores[discriminador].
                         exemplos_aprendidos / self.intervalo_crescimento
                     ]))):
                    self.discriminadores[i].treinar(entrada_reorganizada)
                    self.discriminadores[
                        i].exemplos_aprendidos = self.discriminadores[
                            i].exemplos_aprendidos + 1
                    exemplo_aprendido = True

            if (not (exemplo_aprendido) and
                    self.quantidade_classe_repetida(classe) <= self.limitante):
                self.discriminadores.append(
                    discriminador_cluswisard.DiscriminadorCluswisard(
                        self.numero_entradas_rams, self.tamanho_entrada,
                        self.discriminadores[discriminador].classe))
                self.numero_discriminadores = self.numero_discriminadores + 1
                self.discriminadores[self.numero_discriminadores -
                                     1].treinar(entrada_reorganizada)
                self.discriminadores[self.numero_discriminadores -
                                     1].exemplos_aprendidos += 1