Bibliotecas e estruturas
Neste capítulo, relacionaremos o aprendizado profundo com as diferentes bibliotecas e estruturas.
Aprendizagem profunda e Theano
Se quisermos começar a codificar uma rede neural profunda, é melhor ter uma ideia de como diferentes frameworks como Theano, TensorFlow, Keras, PyTorch etc. funcionam.
Theano é uma biblioteca python que fornece um conjunto de funções para a construção de redes profundas que treinam rapidamente em nossa máquina.
Theano foi desenvolvido na Universidade de Montreal, Canadá, sob a liderança de Yoshua Bengio, um pioneiro de redes profundas.
Theano nos permite definir e avaliar expressões matemáticas com vetores e matrizes que são matrizes retangulares de números.
Tecnicamente falando, as redes neurais e os dados de entrada podem ser representados como matrizes e todas as operações de rede padrão podem ser redefinidas como operações de matriz. Isso é importante porque os computadores podem realizar operações matriciais muito rapidamente.
Podemos processar vários valores de matriz em paralelo e, se construirmos uma rede neural com essa estrutura subjacente, podemos usar uma única máquina com uma GPU para treinar redes enormes em uma janela de tempo razoável.
No entanto, se usarmos Theano, temos que construir a rede profunda do zero. A biblioteca não fornece funcionalidade completa para a criação de um tipo específico de rede profunda.
Em vez disso, temos que codificar todos os aspectos da rede profunda, como o modelo, as camadas, a ativação, o método de treinamento e quaisquer métodos especiais para impedir o overfitting.
A boa notícia, entretanto, é que Theano permite a construção de nossa implementação sobre funções vetorizadas, fornecendo-nos uma solução altamente otimizada.
Existem muitas outras bibliotecas que estendem a funcionalidade do Theano. TensorFlow e Keras podem ser usados com Theano como back-end.
Aprendizado profundo com TensorFlow
Googles TensorFlow é uma biblioteca python. Esta biblioteca é uma ótima opção para criar aplicativos de aprendizado profundo de nível comercial.
O TensorFlow cresceu a partir de outra biblioteca DistBelief V2 que fazia parte do Google Brain Project. Esta biblioteca visa estender a portabilidade do aprendizado de máquina para que os modelos de pesquisa possam ser aplicados a aplicativos de nível comercial.
Assim como a biblioteca Theano, o TensorFlow é baseado em gráficos computacionais onde um nó representa dados persistentes ou operação matemática e as bordas representam o fluxo de dados entre os nós, que é uma matriz multidimensional ou tensor; daí o nome TensorFlow
A saída de uma operação ou conjunto de operações é alimentada como entrada para a próxima.
Embora o TensorFlow tenha sido projetado para redes neurais, ele funciona bem para outras redes onde a computação pode ser modelada como gráfico de fluxo de dados.
O TensorFlow também usa vários recursos do Theano, como eliminação comum e de subexpressão, diferenciação automática, variáveis compartilhadas e simbólicas.
Diferentes tipos de redes profundas podem ser construídas usando TensorFlow, como redes convolucionais, Autoencoders, RNTN, RNN, RBM, DBM / MLP e assim por diante.
No entanto, não há suporte para configuração de hiperparâmetro no TensorFlow. Para essa funcionalidade, podemos usar Keras.
Aprendizado profundo e Keras
Keras é uma biblioteca Python poderosa e fácil de usar para desenvolver e avaliar modelos de aprendizado profundo.
Possui um design minimalista que nos permite construir uma rede camada por camada; treine-o e execute-o.
Ele envolve as bibliotecas de computação numérica eficientes Theano e TensorFlow e nos permite definir e treinar modelos de rede neural em algumas linhas curtas de código.
É uma API de rede neural de alto nível, ajudando a fazer amplo uso de aprendizado profundo e inteligência artificial. Ele roda em cima de uma série de bibliotecas de nível inferior, incluindo TensorFlow, Theano e assim por diante. O código Keras é portátil; podemos implementar uma rede neural em Keras usando Theano ou TensorFlow como back-end sem nenhuma alteração no código.