8 bibliotecas de Deep Learning mais usadas em Python

Se você se interessa por Deep Learning, dos neurônios mais simples aos mais complexos, mas não sabe qual é a melhor biblioteca para seu projeto, nós te damos uma força! Esta lista com 8 bibliotecas tem a finalidade de ajudar você na sua escolha, apresentando de maneira resumida e direta cada biblioteca. Vamos lá?!

 

1. Pytorch

O PyTorch é classificado como “Tensores e redes neurais dinâmicas em Python com forte aceleração de GPU”. Tensores são uma construção matemática usada pesadamente em física e engenharia. Um tensor de rank dois é um tipo especial de matriz; pegar o produto interno de um vetor com o tensor produz outro vetor com uma nova magnitude e uma nova direção. 

A aceleração de GPU é uma das mais modernas estruturas das Deep Neural Networks. Uma rede neural dinâmica é aquela que pode mudar de iteração para iteração, por exemplo, permitindo que um modelo PyTorch adicione e remova camadas ocultas durante o treinamento para melhorar sua precisão e generalidade. O PyTorch recria o grafo em tempo real em cada etapa de iteração. Em contraste, o TensorFlow, por padrão, cria um único grafo de fluxo de dados, otimiza o código do grafo para desempenho e depois treina o modelo.

Enquanto o  modo de execução ávido é uma opção relativamente nova no TensorFlow, é a única maneira de executar o PyTorch: chamadas de API são executadas quando invocadas, em vez de serem adicionadas a um grafo para serem executadas posteriormente.

O PyTorch integra bibliotecas de aceleração como Intel MKL e Nvidia cuDNN e NCCL (Nvidia Collective Communications Library) para maximizar a velocidade. Seus principais backend são gravados como bibliotecas independentes com uma API C99. Ao mesmo tempo, o PyTorch não é uma ligação do Python em um framework monolítico de C ++. A intenção é que ele seja profundamente integrado ao Python e permita o uso de outras bibliotecas Python.

 

2. Theano

Sem o Theano, não existiria nada perto da quantidade de bibliotecas de deep learning que temos hoje, especificamente em Python. Da mesma forma que sem o NumPy, não poderíamos ter SciPy, scikit-learn e scikit-image, o mesmo pode ser dito sobre Theano e abstrações de alto nível de aprendizagem profunda.

Basicamente, Theano é uma biblioteca Python usada para definir, otimizar e avaliar  expressões matemáticas envolvendo matrizes multidimensionais. Esta biblioteca consegue isso através de forte integração com NumPy e o uso transparente da GPU.

Embora você  possa construir redes de aprendizagem profunda em Theano, podemos pensar nesta biblioteca como blocos de construção para redes neurais, da mesma forma que o NumPy serve como os blocos de construção para a computação científica. Na verdade, a maioria das bibliotecas mencionadas nesta matéria envolve o Theano para torná-lo mais conveniente e acessível.

Embora não seja uma comparação perfeita, construir uma rede neural convolucional no Theano é como escrever uma máquina de vetores de suporte (SVM) em Python nativo com apenas uma pitada de NumPy.

 

3. Lasagne

Lasagne é uma leve e de fácil manipulação, usada para construir e treinar redes em Theano. Sua leveza não se destina a ser um invólucro pesado em torno de Theano como Keras é. Embora isso faça com que seu código seja mais detalhado, esta biblioteca o libera de quaisquer restrições, enquanto fornece blocos de construção modulares baseados em Theano.

Simplificando: Lasagne funciona como um meio-termo entre a programação de baixo nível de Theano e as abstrações de alto nível de Keras.

 

4. TensorFlow

Semelhante ao Theano, o TensorFlow é uma biblioteca de código aberto para computação numérica usando grafos de fluxo de dados, que é tudo o que uma rede neural realmente é. Originalmente desenvolvida pelos pesquisadores da equipe do Google Brain, na organização de pesquisa Machine Intelligence do Google, a biblioteca desde então é de código aberto e disponibilizada ao público.

Um benefício principal do TensorFlow (em comparação com Theano) é a  computação distribuída, especialmente entre várias GPUs, embora isso seja algo que está sendo trabalhado no Theano. É bom lembrar que desde sua 2ª versão o Tensor-Flow incorporou o Keras, trazendo uma API muito mais amigável.

 

5. Keras

Sem dúvidas, uma das bibliotecas Python de deep learning mais querida por programadores. Keras é uma biblioteca de rede neural modular que pode usar tanto Theano ou TensorFlow como um backend. A principal motivação por trás do Keras é que você deve ser capaz de experimentar rapidamente e ir da ideia ao resultado o  mais rápido possível.

Arquitetar redes em Keras parece fácil e natural. Inclui alguns dos algoritmos de última geração para otimizadores (Adam, RMSProp), normalização (BatchNorm) e camadas de ativação (PReLU, ELU, LeakyReLU).

Esta biblioteca também dá grande ênfase às Redes Neurais Convolucionais, o que é extremamente valioso do ponto de vista da visão computacional.

Mais especificamente, você pode construir facilmente redes baseadas em sequência (onde as entradas fluem linearmente pela rede) e redes baseadas em grafos (onde as entradas podem “pular” certas camadas, apenas para serem concatenadas posteriormente). Isso torna a implementação de arquiteturas de rede mais complexas, como GoogLeNet e SqueezeNet,  muito mais fácil.

 

6. mxnet

Esta biblioteca Python de Deep Learning possui o foco em redes de classificação de imagem de treinamento. Apesar de exigir um pouco mais de código para criar uma rede em mxnet, o que esta biblioteca oferece é um número incrível de ligações de linguagem (C ++, Python, R, JavaScript, etc.)

A biblioteca mxnet realmente brilha para computação distribuída, permitindo treinar sua rede em várias máquinas CPU / GPU e até mesmo em clusters AWS, Azure e YARN.

Lembre-se, é necessário um pouco mais de código para colocar um experimento em execução no mxnet (em comparação com Keras), mas se você deseja distribuir o treinamento em várias GPUs ou sistemas, o recomendável seria o mxnet.

 

7. Sklearn-theano

Há momentos em que você não precisa treinar uma Rede Neural Convolucional (RNC) de ponta a ponta. Em vez disso, você precisa tratar a RNC como um extrator de recursos. Isso é especialmente útil em situações em que você não tem dados suficientes para treinar uma RNC completa do zero. Em vez disso, basta passar suas imagens de entrada por uma arquitetura pré-treinada popular, como OverFeat, AlexNet, VGGNet ou GoogLeNet, e extrair recursos das camadas FC ou qualquer camada que você decidir usar.

Simplificando, isso é exatamente o que sklearn-theano permite que você faça. Você não pode treinar um modelo do zero com ele, mas é  fantástico para tratar redes como extratores de recursos.

 

8. Nolearn

Enquanto Keras envolve Theano e TensorFlow em uma API mais amigável, Nolearn faz o mesmo, apenas para Lasagne. Além disso, todo o código no Nolearn é compatível com o scikit-learn, o que é um grande bônus.

Uma dica é usar o Nolearn para implementação de Deep Belief Networks (DBNs).

Gostou de mais esta dica Insigth? Quais bibliotecas você incluiria na lista?

 

Fonte: Pyimagesearch e CIO.

 

Marketing Digital | Graduanda em Publicidade e Propaganda na Universidade Federal do Ceará