Ferramenta de código aberto para aprendizado / experimentação em IA em casa?

9

Eu gostaria de fazer algumas experiências com a evolução da rede neural (NEAT). Eu escrevi alguns códigos GA e da rede neural em C ++ nos anos 90 apenas para brincar, mas a abordagem DIY provou ser trabalhosa o suficiente para que eu a abandonasse.

As coisas mudaram muito desde então, e existem muitas ótimas bibliotecas e ferramentas de código aberto disponíveis para qualquer interesse. Pesquisei no Google diferentes bibliotecas de código-fonte aberto (por exemplo, DEAP), mas eu poderia usar alguma ajuda para escolher uma que seria uma boa opção ...

  • Eu gastei muito do meu tempo escrevendo código para visualizar o que estava acontecendo (estado da rede neural, aptidão da população) ou resultados finais (gráficos, etc.).

    Talvez isso precise ser atendido por uma biblioteca de código aberto separada, mas o suporte à visualização seria algo que me permitiria dedicar mais tempo ao problema / solução e menos aos detalhes da implementação.
  • Eu sei C / C ++, Java, C #, Python, Javascript e alguns outros. Algo que é uma boa troca entre uma linguagem de nível superior e um bom desempenho no hardware doméstico seria uma boa escolha.

Alguém com experiência pode sugerir uma boa biblioteca de código aberto ou um conjunto de ferramentas?

Scott Smith
fonte
Esta pergunta pertence a softwarerecs.stackexchange.com . Btw, para mim, sua pergunta parece ser muito ampla e, portanto, deve ser encerrada, de qualquer maneira.
nbro
@ nbro - Obrigado, suspeitei que havia um lugar melhor para isso, mas não sabia sobre softwarerecs.
Scott Smith
Os que votaram positivamente nesta pergunta podem nos dizer por quê?
Quinta-

Respostas:

3

Como está escrito em Javascript e ainda não oferece suporte a GPU, é bastante lento. No entanto, é muito bom mexer com arquiteturas de rede flexíveis. A única visualização que ele oferece no momento é um mapa da arquitetura de rede, mas os gráficos podem ser facilmente implementados.

https://github.com/wagenaartje/neataptic

Thomas W
fonte
2

Bem, se você escolher o TensorfFlow para trabalhar, receberá o TensorBoard como parte do pacote. Isso pode ser algo parecido com o que você está procurando.

E com o TensorFlow, você pode codificar em C ++, Python e algumas outras linguagens (acho que também existem ligações Ruby e Java, provavelmente outras até agora).

mindcrime
fonte
2

Há também o DXNN, que é como você descreveu, um sistema neuroevolucionário, escrito em Erlang. https://github.com/CorticalComputer/DXNN2

Eu trabalhei nele para torná-lo modular, para que você o use como uma biblioteca e mantenha seu código / aplicativo isolado.

Aqui está um exemplo de código , que baixa o DXNN como uma biblioteca. Ele também gera arquivos de dados prontos para gnuplot para visualização.

Aus
fonte
2

Fann ( http://leenissen.dk/fann/wp/ ) é uma biblioteca de rede neural de código aberto e gratuita.

Recursos da FANN:

  • Biblioteca de rede neural artificial multicamada em C
  • Treinamento de retropropagação (RPROP, Quickprop, Lote, Incremental)
  • Desenvolvimento de treinamento em topologia que constrói e treina dinamicamente a RNA (Cascade2)
  • Fácil de usar (crie, treine e execute uma RNA com apenas três chamadas de função)
  • Rápida (execução até 150 vezes mais rápida que outras bibliotecas)
  • Versátil (possível ajustar muitos parâmetros e recursos em tempo real)
  • Bem documentado (um artigo de introdução fácil de ler, um manual de referência completo e um relatório da universidade com mais de 50 páginas descrevendo as considerações de implementação etc.)
  • Plataforma cruzada (o script de configuração para linux e unix, arquivos dll para windows, arquivos de projeto para os compiladores MSVC ++ e Borland também funcionam)
  • Várias funções de ativação diferentes implementadas (incluindo funções lineares passo a passo para esse bit extra de velocidade)
  • Fácil de salvar e carregar ANNs inteiras
  • Vários exemplos fáceis de usar
  • Pode usar números de ponto flutuante e de ponto fixo (na verdade, ambos flutuante, duplo e int estão disponíveis)
  • Cache otimizado (para um pouco mais de velocidade)
  • Código aberto, mas ainda pode ser usado em aplicativos comerciais (licenciado sob LGPL)
  • Estrutura para fácil manuseio de conjuntos de dados de treinamento
  • Interfaces Gráficas
  • Ligações de idiomas a um grande número de linguagens de programação diferentes
  • Amplamente utilizado (aproximadamente 100 downloads por dia)
track3r
fonte
2

Para algoritmos genéticos, escrevi GeneticSharp .

Uma biblioteca de algoritmos genéticos de várias plataformas para .NET Core e .NET Framework. A biblioteca possui várias implementações de operadores GA, como: seleção, cruzamento, mutação, reinserção e finalização.

giacomelli
fonte