Estou usando as Redes Neurais para resolver diferentes problemas de aprendizado de máquina. Estou usando Python e pybrain, mas esta biblioteca está quase descontinuada. Existem outras boas alternativas em Python?
machine-learning
python
neural-network
marcodena
fonte
fonte
Respostas:
ATUALIZAÇÃO: o cenário mudou bastante desde que eu respondi a essa pergunta em julho de 14 e alguns novos jogadores entraram no espaço. Em particular, eu recomendaria verificar:
Cada um deles tem seus pontos fortes e fracos, então experimente e veja qual é o que melhor se adequa ao seu caso de uso. Embora eu tivesse recomendado o uso do PyLearn2 há um ano, a comunidade não está mais ativa, então eu recomendaria procurar outro lugar. Minha resposta original à resposta está incluída abaixo, mas é amplamente irrelevante neste momento.
O PyLearn2 é geralmente considerado a biblioteca de escolha para redes neurais e aprendizado profundo em python. Ele foi projetado para facilitar a experimentação científica, e não para a facilidade de uso, por isso a curva de aprendizado é bastante acentuada, mas se você tomar o seu tempo e seguir os tutoriais, acho que ficará feliz com a funcionalidade que ele fornece. Tudo, desde Perceptrons multicamadas padrão até Máquinas Boltzmann restritas, Redes convolucionais e Autoencodificadores. Há um ótimo suporte à GPU e tudo é construído sobre o Theano, portanto, o desempenho é geralmente muito bom. A fonte do PyLearn2 está disponível no github .
Esteja ciente de que o PyLearn2 tem o problema oposto do PyBrain no momento - em vez de ser abandonado, o PyLearn2 está em desenvolvimento ativo e está sujeito a alterações frequentes.
fonte
O Fluxo de tensor ( documentos ) do Google é outra estrutura interessante que possui diferenciação automática. Escrevi algumas reflexões rápidas sobre o Google Tensor Flow no meu blog, junto com o exemplo MNIST que eles têm em seu tutorial.
Consulte também: Meu tutorial do Tensorflow XOR
A lasanha ( docs ) é muito boa, pois usa theano (→ você pode usar a GPU) e simplifica o uso. O autor da lasanha venceu o desafio Kaggle Galaxy, até onde eu sei. É legal com o nolearn . Aqui está um exemplo de rede MNIST:
Caffe é uma biblioteca C ++, mas possui ligações Python. Você pode fazer a maioria das coisas por arquivos de configuração (prototxt). Tem muitas opções e também pode fazer uso da GPU.
fonte
O Pylearn conta com o Theano e, como mencionado na outra resposta, o uso da biblioteca é bastante complicado, até que você o compreenda.
Enquanto isso, sugiro usar Theanets . Também foi construído sobre o Theano, mas é muito mais fácil trabalhar com ele. Pode ser verdade que ele não possui todos os recursos do Pylearn, mas para o trabalho básico é suficiente.
Além disso, é de código aberto, para que você possa adicionar redes personalizadas rapidamente, se ousar. :)
EDIT: Dez 2015. Recentemente, comecei a usar o Keras . É um nível um pouco mais baixo que o Theanets, mas muito mais poderoso. Para testes básicos, o Theanets é apropriado. Mas se você quiser fazer alguma pesquisa no campo da ANN Keras é muito mais flexível. Além disso, o Keras pode usar o Tensorflow como back-end.
fonte
O TensorFlow (do Google, lançado em 09/11/2015) parece promissor.
PARA SUA INFORMAÇÃO:
fonte
Pylearn2 parece ser a biblioteca de escolha, no entanto, acho seus arquivos de configuração YAML desanimadores.
O próprio Python foi projetado para ser uma linguagem fácil para a criação de protótipos. Por que você não o usaria para definir as propriedades da rede? Temos ótimos editores com preenchimento automático que tornariam sua vida muito mais fácil e o Python não é como o C ++, onde é necessário aguardar o término das compilações para poder executar seu código.
Arquivos YAML, por outro lado, você deve editar usando um editor de texto padrão sem qualquer tipo de assistência e isso torna a curva de aprendizado ainda mais acentuada.
Eu posso estar perdendo o quadro geral, mas ainda não entendo o que eles estavam pensando, não acho que a prototipagem de código seria muito mais lenta. Por esse motivo, estou pensando em Theanets ou usando Theano diretamente.
fonte
Eu gosto de Blocks , que também é construído em cima do Theano. Muito mais acessível que o PyLearn2 e mais rico em recursos que a Lasanha. Bem escrito também.
Atualizado em janeiro de 2016:
No momento da redação deste artigo, Keras tem, de longe, o maior momento. É altamente modular e pode ser executado no Theano e no Tensorflow, oferecendo grandes oportunidades.
fonte
MXNet :
fonte
Pelo que ouvi, o Pylearn2 pode atualmente ser a biblioteca de escolha para a maioria das pessoas. Isso me lembra um post recente de um mês atrás, que lista todas as diferentes bibliotecas de aprendizado de máquina com uma breve explicação
https://www.cbinsights.com/blog/python-tools-machine-learning
A seção em que você pode estar interessado aqui seria "Deep Learning". Sobre o Pylearn2, ele escreve
fonte
Eu escrevi este post detalhando alguns dos meus favoritos pessoais:
As melhores bibliotecas de aprendizado de máquina em Python
Como são mencionadas mais de 30 bibliotecas diferentes, não as publicarei aqui, mas estas estão entre as mais populares:
(Desculpe, não é possível vincular aos repositórios do Github, pois meu representante ainda é <10 ...)Editar: links adicionados aos repositórios do Github.
fonte
neon :
fonte
Apenas para adicionar mais alguns recursos. Recentemente, houve um trabalho estudando as diferenças entre vários pacotes de redes neurais e redes neurais profundas.
Aqui você pode encontrar as informações . Parece que Torch e TensorFlow são os vencedores.
Nota: nem todos eles estão em python. No entanto, eu postei para abrir a discussão.
fonte
O Microsoft Cognition Toolkit (anteriormente conhecido como CNTK) possui uma API Python . Entre outras coisas, é suposto ser bom para multi-GPU :
Exemplos e tutoriais podem ser encontrados em https://github.com/Microsoft/CNTK/tree/master/bindings/python
fonte
DyNet: O Dynamic Neural Network Toolkit. A partir de 1}:
Era anteriormente conhecido como cnn (cuja ligação python foi denominada pycnn).
Referências:
fonte
Eu recomendo que você use o tensorflow, que está em forte desenvolvimento e suporta aprendizado profundo. Você pode usar as APIs de redes neurais de alto nível API Keras, que são executadas sobre o fluxo tensor e são muito simples de usar, basta tentar um tutorial e você vai adorar.
fonte
PyTorch
Está ganhando muito suporte devido à sua facilidade de uso e semelhança com o Python básico.
Ele roda "linha por linha" (através de gráficos dinâmicos), assim como o Python normal e pode ser facilmente depurado - mesmo usando instruções de impressão padrão. Ele também se integra muito bem ao NumPy e outros linbraries Python conhecidos, como o Scikit Learn.
Como facilita a modelagem, é ótimo para criar protótipos e explorar novas idéias em geral.
Ele suporta várias GPUs e o faz de uma maneira muito fácil.
Confira mais recursos aqui .
Embora muitos dos benefícios acima tornem o PyTorch muito mais agradável de usar do que outras bibliotecas comumente usadas, vale ressaltar que a próxima versão principal do Tensorflow, por padrão, também usará a criação dinâmica de gráficos (também conhecido como modo ansioso ). Isso o tornará comparável ao PyTorch em uso.
fonte
Se você estiver interessado em comparações de desempenho, Soumith Chintala mantém um conjunto de parâmetros de convnet que cobrem várias das estruturas python já mencionadas ( TensorFlow , chainer , neon , Theano ):
fonte
NeuPy é uma biblioteca Python para redes neurais artificiais. O NeuPy suporta muitos tipos diferentes de redes neurais, de um perceptron simples a modelos de aprendizado profundo.
fonte