Narzędzie typu open source do domowej nauki / eksperymentów AI?

9

Chciałbym trochę eksperymentować z ewolucją sieci neuronowej (NEAT). W latach 90. napisałem trochę kodu GA i sieci neuronowej w C ++ tylko dla zabawy, ale podejście do majsterkowania okazało się na tyle pracochłonne, że ostatecznie go porzuciłem.

Od tego czasu wiele się zmieniło i istnieje wiele bardzo ładnych bibliotek i narzędzi typu open source, które zaspokoją wszelkie potrzeby. Przejrzałem różne biblioteki Open Source (np. DEAP), ale przydałaby mi się pomoc w wyborze takiej, która byłaby dobrze dopasowana ...

  • Większość czasu spędziłem na pisaniu kodu, aby wizualizować, co się dzieje (stan sieci neuronowej, sprawność populacji) lub wyniki końcowe (wykresy itp.).

    Może to musiałoby być spełnione przez oddzielną bibliotekę typu open source, ale wsparcie wizualizacji byłoby czymś, co pozwoliłoby mi spędzić więcej czasu na problemie / rozwiązaniu, a mniej na szczegółach implementacji.
  • Znam C / C ++, Java, C #, Python, JavaScript i kilka innych. Dobrym wyborem byłoby coś, co stanowi dobry kompromis między językiem wyższego poziomu a dobrą wydajnością sprzętu domowego.

Czy ktoś z doświadczeniem może zasugerować dobrą bibliotekę open source lub zestaw narzędzi?

Scott Smith
źródło
To pytanie należy do softwarerecs.stackexchange.com . Przy okazji, twoje pytanie wydaje się być bardzo szerokie i dlatego powinno być zamknięte.
nbro
@nbro - Dzięki, podejrzewałem, że jest na to lepsze miejsce, ale nie wiedziałem o oprogramowaniu.
Scott Smith
Czy ci, którzy głosowali za tym pytaniem, mogą powiedzieć nam dlaczego?
kwintumnia

Odpowiedzi:

3

ponieważ jest to napisane w Javascripcie i nie oferuje (jeszcze) obsługi GPU, działa dość wolno. Jednak bardzo miło jest bawić się przy elastycznych architekturach sieciowych. Jedyną wizualizacją, którą oferuje obecnie, jest mapa architektury sieci, ale wykresy można łatwo wdrożyć.

https://github.com/wagenaartje/neataptic

Thomas W.
źródło
2

Cóż, jeśli wybierzesz TensorfFlow do pracy, otrzymasz TensorBoard jako część pakietu. To może być coś, czego szukasz.

A dzięki TensorFlow możesz kodować w C ++, Python i kilku innych językach (myślę, że istnieją również powiązania Ruby i Java, prawdopodobnie jeszcze inne).

przestępstwa umysłowe
źródło
2

Istnieje również DXNN, który jest, jak opisałeś, systemem neuroewolucyjnym, jest napisany w Erlang. https://github.com/CorticalComputer/DXNN2

Popracowałem nad tym, aby uczynić go modułowym, więc używasz go jako biblioteki i trzymasz kod / aplikację w izolacji.

Oto przykład kodu , który pobiera DXNN jako bibliotekę. generuje również pliki danych gotowe do gnuplot do wizualizacji.

Aus
źródło
2

Fann ( http://leenissen.dk/fann/wp/ ) to darmowa biblioteka sieci neuronowych typu open source.

Funkcje FANN:

  • Wielowarstwowa biblioteka sztucznej sieci neuronowej w C
  • Szkolenie dotyczące propagacji reklam (RPROP, Quickprop, Batch, Incremental)
  • Ewoluujący trening topologii, który dynamicznie buduje i trenuje ANN (Cascade2)
  • Łatwy w użyciu (tworzenie, szkolenie i uruchamianie ANN za pomocą tylko trzech wywołań funkcji)
  • Szybkie (do 150 razy szybsze wykonanie niż w przypadku innych bibliotek)
  • Wszechstronny (możliwy do dostosowania wielu parametrów i funkcji w locie)
  • Dobrze udokumentowany (czytelny artykuł wprowadzający, dokładny podręcznik referencyjny oraz ponad 50 stronicowy raport uniwersytecki opisujący kwestie związane z wdrażaniem itp.)
  • Wieloplatformowy (konfiguracja skryptu dla systemu Linux i Unix, pliki dll dla systemu Windows, pliki projektów dla kompilatorów MSVC ++ i Borland są również zgłaszane do pracy)
  • Zaimplementowano kilka różnych funkcji aktywacji (w tym krokowe funkcje liniowe dla tego dodatkowego bitu prędkości)
  • Łatwe zapisywanie i ładowanie całych ANN
  • Kilka łatwych w użyciu przykładów
  • Może używać zarówno liczb zmiennoprzecinkowych, jak i stałych punktów (w rzeczywistości dostępne są zarówno liczby zmiennoprzecinkowe, podwójne i całkowite)
  • Zoptymalizowana pamięć podręczna (dla tej dodatkowej prędkości)
  • Open source, ale nadal można go używać w aplikacjach komercyjnych (na licencji LGPL)
  • Ramy dla łatwej obsługi zestawów danych szkoleniowych
  • Interfejsy graficzne
  • Powiązania językowe z dużą liczbą różnych języków programowania
  • Powszechnie używane (około 100 pobrań dziennie)
track3r
źródło
2

Dla algorytmów genetycznych napisałem GeneticSharp .

Wieloplatformowa biblioteka algorytmów genetycznych dla .NET Core i .NET Framework. Biblioteka ma kilka implementacji operatorów GA, takich jak: selekcja, crossover, mutacja, ponowne wstawienie i zakończenie.

giacomelli
źródło