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?


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


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



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.


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)

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.