Strumento open source per l'apprendimento / sperimentazione dell'IA domestica?


9

Mi piacerebbe fare alcuni esperimenti con l'evoluzione della rete neurale (NEAT). Ho scritto un po 'di codice GA e di rete neurale in C ++ negli anni '90 solo per scherzare, ma l'approccio fai-da-te si è rivelato abbastanza laborioso che alla fine l'ho lasciato cadere.

Le cose sono cambiate molto da allora, e ci sono molte librerie e strumenti open source molto carini in circolazione per qualsiasi interesse che si possa avere. Ho cercato su Google diverse librerie open source (ad esempio DEAP), ma potrei usare un po 'di aiuto per sceglierne una che sarebbe adatta ...

  • Ho trascorso gran parte del mio tempo a scrivere codice per visualizzare cosa stava succedendo (stato della rete neurale, idoneità della popolazione) o risultati finali (grafici, ecc.).

    Forse questo dovrebbe essere soddisfatto da una libreria open source separata, ma il supporto della visualizzazione sarebbe qualcosa che mi permetterebbe di dedicare più tempo al problema / soluzione e meno ai dettagli di implementazione.
  • Conosco C / C ++, Java, C #, Python, Javascript e pochi altri. Qualcosa che sia un buon compromesso tra un linguaggio di livello superiore e buone prestazioni sull'hardware domestico sarebbe una buona scelta.

Qualcuno con esperienza può suggerire una buona libreria o set di strumenti open source?


Questa domanda appartiene a softwarerecs.stackexchange.com . A proposito, la mia domanda sembra essere molto ampia e quindi dovrebbe essere chiusa, comunque.
nbro

@nbro - Grazie, sospettavo che ci fosse un posto migliore per questo, ma non sapevo nulla di software.
Scott Smith,

Chi ha votato a favore di questa domanda può dirci perché?
quintumnia,

Risposte:


3

poiché questo è scritto in Javascript e non offre (ancora) il supporto GPU, è piuttosto lento. Tuttavia, è molto piacevole giocherellare con architetture di rete flessibili. L'unica visualizzazione che offre in questo momento è una mappa dell'architettura di rete, ma i grafici potrebbero essere facilmente implementati.

https://github.com/wagenaartje/neataptic


2

Bene, se scegli TensorfFlow con cui lavorare, otterrai TensorBoard come parte del pacchetto. Potrebbe essere qualcosa di simile a quello che stai cercando.

E con TensorFlow, puoi scrivere codice in C ++, Python e poche altre lingue (penso che ci siano anche i collegamenti Ruby e Java, probabilmente altri ormai).



2

C'è anche DXNN, che è come hai descritto, un sistema neuroevolutivo, è scritto in Erlang. https://github.com/CorticalComputer/DXNN2

Ci ho lavorato un po 'per renderlo modulare, quindi lo usi come libreria e mantieni il tuo codice / applicazione isolato.

Ecco un esempio di codice , che scarica DXNN come libreria. genera anche file di dati pronti per gnuplot per la visualizzazione.


2

Fann ( http://leenissen.dk/fann/wp/ ) è una libreria di rete neurale open source gratuita.

Caratteristiche FANN:

  • Libreria di reti neurali artificiali multistrato in C.
  • Addestramento di backpropagation (RPROP, Quickprop, Batch, incrementale)
  • Formazione in topologia in evoluzione che costruisce e forma dinamicamente l'ANN (Cascade2)
  • Facile da usare (creare, addestrare ed eseguire un ANN con solo tre chiamate di funzione)
  • Veloce (esecuzione fino a 150 volte più veloce rispetto ad altre librerie)
  • Versatile (possibile regolare molti parametri e funzionalità al volo)
  • Ben documentato (un articolo di introduzione di facile lettura, un manuale di riferimento completo e un rapporto universitario di oltre 50 pagine che descrive le considerazioni sull'implementazione ecc.)
  • Multipiattaforma (anche gli script di configurazione per Linux e Unix, i file DLL per Windows, i file di progetto per MSVC ++ e i compilatori Borland funzionano)
  • Sono state implementate diverse funzioni di attivazione (incluse funzioni lineari graduali per quel bit di velocità extra)
  • Facile da salvare e caricare interi ANN
  • Diversi esempi facili da usare
  • Può usare sia numeri in virgola mobile sia numeri in virgola fissa (attualmente sono disponibili sia float, double e int)
  • Cache ottimizzata (per quel tocco di velocità in più)
  • Open source, ma può ancora essere utilizzato in applicazioni commerciali (con licenza LGPL)
  • Framework per una facile gestione dei set di dati di training
  • Interfacce grafiche
  • Collegamenti linguistici a un gran numero di linguaggi di programmazione diversi
  • Ampiamente usato (circa 100 download al giorno)

2

Per gli algoritmi genetici, ho scritto GeneticSharp .

Una libreria di algoritmi genetici multipiattaforma per .NET Core e .NET Framework. La libreria ha diverse implementazioni di operatori GA, come: selezione, crossover, mutazione, reinserimento e terminazione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.