Ich implementiere gerade einen Programmklassifizierer für meine Kursarbeit. Mein Dozent bittet mich, den Algorithmus "Evolving ANN" zu verwenden. Also habe ich ein Paket namens NEAT (Neuro Evolution of Augmenting Topologies) gefunden. Ich habe 10 Eingänge und 7 Ausgänge, dann ändere ich einfach die Quelle aus ihrer Dokumentation.NEAT mit mehrfachem Ausgang
def eval_fitness(genomes):
for g in genomes:
net = nn.create_feed_forward_phenotype(g)
mse = 0
for inputs, expected in zip(alldata, label):
output = net.serial_activate(inputs)
output = np.clip(output, -1, 1)
mse += (output - expected) ** 2
g.fitness = 1 - (mse/44000) #44000 is the number of samples
print(g.fitness)
Ich hatte die Konfigurationsdatei auch geändert, so dass das Programm 10 Eingänge und 7 Ausgänge hat. Aber wenn ich versuche, um den Code auszuführen, gibt es mir
Traceback (most recent call last):
File "/home/ilhammaziz/PycharmProjects/tuproSC2/eANN.py", line 40, in <module>
pop.run(eval_fitness, 10)
File "/home/ilhammaziz/.local/lib/python3.5/site-packages/neat/population.py", line 190, in run
best = max(population)
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Fehler Was ich tun soll? Danke
Gibt es einen bestimmten Grund, NEAT gewählt zu haben und was hat Ihr Professor mit dem "Evolving ANN" -Algorithmus gemeint, würde ein einfaches Mehrschicht-Perzeptron in diese Kategorie fallen? – Ironluca
Eigentlich habe ich keinen Grund NEAT zu wählen, 'Evolving ANN' Ich denke es genauso wie Neuro-Evolution. Referenzen für ordentlich http://neat-python.readthedocs.io/en/latest/index.html –