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
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
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)
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)
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