Curso
Profissionais de machine learning e engenheiros de software geralmente recorrem a frameworks para aliviar parte do trabalho pesado da programação.
\nPor exemplo, frameworks de machine learning permitem implementar modelos sem precisar mergulhar a fundo na base matemática dos algoritmos.
\nIsso agiliza o desenvolvimento, já que os programadores não precisam reescrever código o tempo todo para construir suas aplicações.
\nEsses conceitos também valem para deep learning — um subconjunto de machine learning. TensorFlow, Keras e PyTorch estão entre os frameworks de deep learning mais populares.
\nNeste tutorial, vamos explorar cada um e montar um guia prático para ajudar você a decidir qual faz mais sentido para o seu projeto.
\nO que é TensorFlow?
\nTensorFlow é um framework de deep learning de ponta a ponta. Foi desenvolvido pelo time do Google Brain, inicialmente para uso interno em pesquisa e produção; em 2015, foi disponibilizado como open-source sob a licença Apache. Em setembro de 2019, o Google lançou a versão atualizada TensorFlow 2.0. Você pode conhecer o framework em mais detalhes no nosso tutorial de TensorFlow.
\nAlguns dos principais recursos do TensorFlow incluem:
\n- \n
- TensorBoard. Um conjunto de ferramentas de visualização que ajuda a entender, depurar e otimizar programas em TensorFlow. \n
- Colunas de atributos (feature columns). Abstrações de alto nível que transformam dados brutos em formatos adequados para modelos de machine learning, facilitando o tratamento de diferentes tipos de dados. \n
- Treinamento fácil em CPU e GPU. O TensorFlow treina modelos em diversos tipos de hardware, incluindo CPUs e GPUs, permitindo computações flexíveis e eficientes. \n
- Treinamento paralelo. Suporte a computação distribuída, possibilitando processar dados e modelos simultaneamente em múltiplas CPUs ou GPUs, acelerando bastante o treinamento. \n
Vantagens do TensorFlow
\nOpen-source
\nO TensorFlow é open-source, ou seja, é gratuito e pode ser usado por qualquer pessoa sem precisar firmar contrato com um fornecedor.
\nDepuração
\nUm dos destaques do TensorFlow é o TensorBoard. É ele que oferece a visualização e as ferramentas necessárias para experimentação em
\nO TensorBoard fornece a visualização e o ferramental necessários para experimentação em deep learning, o que torna muito mais simples depurar seu código em TensorFlow.
\nCompatibilidade com Keras
\nQuando o Google anunciou o TensorFlow 2.0, também declarou o Keras como a API oficial de alto nível do TensorFlow. Isso permite adicionar funcionalidades de alto nível ao seu código e aproveitar a simplicidade do Keras.
\nEscalabilidade
\nO TensorFlow não fica preso a um único dispositivo. Você pode desenvolver sistemas no framework e esperar que eles funcionem com eficiência tanto em dispositivos de borda quanto em máquinas mais robustas.
\nCompatibilidade
\nO framework é compatível com várias linguagens de programação; assim, você pode trabalhar na linguagem com a qual se sente mais à vontade.
\nO TensorFlow oferece uma API estável para Python, além de APIs para Javascript, C++ e Java que não garantem compatibilidade retroativa. Há também pacotes de terceiros que fornecem bindings para C#, Haskell, Julia, MATLAB, Object Pascal, R, Scala, Rust, OCaml e Crystal.
\nParalelismo
\nO TensorFlow é visto como uma biblioteca de aceleração de hardware. O framework usa diferentes estratégias de distribuição em sistemas com GPU e CPU. Isso significa que você é livre para usar a arquitetura que preferir. Note que o sistema usa GPU por padrão se isso não for especificado; esse processo reduz o uso de memória em certa medida.
\nDesvantagens do TensorFlow
\nAtualizações frequentes
\nO esforço para instalar e integrar o TensorFlow ao sistema existente aumenta por conta das atualizações frequentes.
\nHomônimos inconsistentes
\nO TensorFlow oferece homônimos que são difíceis de entender e usar, pois têm nomes idênticos, mas implementações diferentes. Por exemplo, tf.nn.conv2d e tf.layers.Conv2d têm o mesmo nome, porém configurações ligeiramente distintas, o que pode alterar seus resultados.
\nLoops simbólicos ausentes
\nO TensorFlow é considerado uma API de baixo nível — com razão. O framework não lida automaticamente com iterações que geram loops simbólicos. No entanto, ele funciona bem com sequências definidas, o que o torna utilizável.
\nSuporte limitado a GPU
\nO framework oferece suporte a NVIDIA e Python para programação em GPU. Não há suporte adicional.
\nVelocidade de implementação baixa
\nEm todas as configurações de hardware, o TensorFlow costuma levar mais tempo para treinar vários tipos de redes neurais em comparação com seus concorrentes.
\nO que é Keras?
\nKeras é uma popular API open-source de alto nível para redes neurais, desenvolvida por François Chollet e lançada em 2015. A documentação a descreve como \"uma API feita para pessoas, não para máquinas\".
\nEm meados de 2017, o framework foi adotado e integrado ao TensorFlow, ficando acessível aos usuários via módulo tf.keras. Ainda assim, é possível usar o Keras de forma independente do TensorFlow — confira este cheat sheet de Keras ou nosso tutorial completo de Keras.
\nDa documentação:
\n\"O Keras foca em velocidade de depuração, elegância e concisão do código, manutenibilidade e capacidade de implantação. Ao escolher Keras, sua base de código fica menor, mais legível e fácil de iterar. Seus modelos rodam mais rápido graças à compilação XLA e otimizações do Autograph, e são mais fáceis de implantar em qualquer ambiente (servidor, mobile, navegador, embarcados) com TF Serving, TF Lite e TF.js.\"
\nVantagens do Keras
\nSimplicidade
\nO Keras tem uma API muito simples e amigável, o que facilita o aprendizado e o início no deep learning.
\nSuporte a backends
\nO Keras não executa as computações de baixo nível — ele é construído sobre Microsoft CNTK, Theano e TensorFlow. Por isso, incentiva o uso de backends.
\nModelos pré-treinados
\nUm modelo pré-treinado é um modelo salvo após ter sido treinado previamente em um grande conjunto de dados. O Keras oferece vários modelos pré-treinados prontos para uso.
\nExperimentação rápida
\nSendo uma API de alto nível, o Keras é mais abstrato e genérico. Assim, você consegue construir modelos rapidamente em poucas linhas de código.
\nComunidade ativa
\nO Keras é open-source e conta com uma grande comunidade de pesquisadores e desenvolvedores ativos que se ajudam mutuamente.
\nDocumentação clara
\nA documentação do Keras é repleta de exemplos com código, facilitando a compreensão rápida dos conceitos do framework.
\nDesvantagens do Keras
\nAlguns recursos a melhorar
\nMuitos profissionais concordam que o Keras carece de alguns recursos e há bastante espaço para evolução. Um exemplo: o framework não oferece suporte à criação dinâmica de gráficos.
\nErros pouco informativos
\nAs mensagens de erro da biblioteca Keras nem sempre ajudam. Falta clareza para identificar rapidamente a causa principal do erro, exigindo muita depuração.
\nAPI de alto nível
\nPor ser uma API de alto nível, o Keras oferece menos controle fino para manipular funções.
\nO que é PyTorch?
\nPyTorch é o mais novo entre os frameworks de deep learning citados. Desenvolvido pelo grupo de pesquisa em IA do Facebook (hoje Meta) e aberto em 2016, o PyTorch agora faz parte do ecossistema da Linux Foundation.
\nAo longo dos anos, o PyTorch ganhou fama por sua simplicidade, flexibilidade e eficiência. Ele permite criar rapidamente redes neurais complexas para aplicações como visão computacional e processamento de linguagem natural.
\nAlguns recursos importantes:
\n- \n
- Computação com tensores. O PyTorch fornece um array multidimensional chamado Tensor, similar ao ndarray do NumPy, mas com capacidade de rodar em GPUs para acelerar a computação. \n
- TorchScript. Um modo de serializar modelos PyTorch para rodá-los em outros ambientes, como C++, garantindo preparo para produção. \n
- Grafos dinâmicos. Usa grafos computacionais dinâmicos, oferecendo flexibilidade para construir e modificar modelos em tempo real — útil para arquiteturas complexas. \n
- Diferenciação automática. A diferenciação automática e o cálculo de gradientes simplificam o backpropagation e o treinamento de redes neurais. \n
- Suporte a Python. Integra-se perfeitamente ao ecossistema Python, com uma interface mais \"pythônica\" e amigável. \n
Vantagens do PyTorch
\nPythônico
\nO PyTorch é naturalmente pythônico, o que facilita muito a adoção por desenvolvedores Python. Isso ajuda bastante, já que grande parte do trabalho em deep learning é feita nessa linguagem.
\nFácil de aprender
\nA sintaxe do PyTorch é muito simples e intuitiva. Muitos profissionais consideram sua curva de aprendizado suave — alguns dizem que é um dos pacotes de deep learning mais fáceis de aprender.
\nFácil de depurar
\nO PyTorch utiliza as ferramentas de depuração pdb e ipdb do Python. Também é possível usar o PyCharm, já que o PyTorch cria o grafo computacional em tempo real.
\nComunidade forte
\nMesmo sendo um dos frameworks mais novos, o PyTorch rapidamente consolidou uma comunidade dedicada de desenvolvedores. Esse grupo trabalha duro para manter a documentação bem estruturada e útil.
\nParalelismo de dados
\nO paralelismo de dados do PyTorch é muito eficaz, permitindo dividir dados em lotes e enviá-los para várias GPUs. Assim, transfere-se uma parte considerável da carga do CPU para a GPU.
\nDesvantagens do PyTorch
\nSem visualização nativa
\nO TensorBoard, do TensorFlow, permite visualizar o processo de treinamento, mas o PyTorch não tem algo similar nativamente — é preciso usar ferramentas de terceiros.
\nServidor de API para produção
\nNão há um framework próprio para servir modelos diretamente na web; portanto, é necessário usar um backend de terceiros como Flask ou Django.
\nQual escolher? Uma análise comparativa de PyTorch vs Keras vs TensorFlow
\n| \n\n | \n TensorFlow \n | \n PyTorch \n | \n Keras \n |
| \n Nível da API \n | \n Ambos \n(alto e baixo) \n | \n Baixo \n | \n Alto \n |
| \n Arquitetura \n | \n Não é fácil de usar \n | \n Complexa, menos legível \n | \n Simples, concisa, legível \n |
| \n Datasets \n | \n Grandes volumes de dados, alta performance \n | \n Grandes volumes de dados, alta performance \n | \n Datasets menores \n |
| \n Depuração \n | \n Difícil de depurar \n | \n Boas capacidades de depuração \n | \n Rede simples; depuração raramente necessária \n |
| \n Modelos pré-treinados? \n | \n Sim \n | \n Sim \n | \n Sim \n |
| \n Popularidade \n | \n Segundo mais popular dos três \n | \n Terceiro mais popular dos três \n | \n O mais popular dos três \n |
| \n Velocidade \n | \n Rápido, alta performance \n | \n Rápido, alta performance \n | \n Mais lento, menor performance \n |
| \n Escrito em \n | \n C++, CUDA, Python \n | \n Lua \n | \n Python \n |
Como escolher o framework certo
\nA resposta para \"qual framework é melhor?\" sempre será subjetiva, já que cada um tem prós e contras, como vimos. Ainda assim, aqui vai uma lista do que considerar ao decidir.
\nPytorch vs TensorFlow
\n- \n
- Código boilerplate. PyTorch e TensorFlow simplificam a construção de modelos, eliminando boa parte do código repetitivo. \n
- Pythônico e POO. O PyTorch é mais \"pythônico\" e segue princípios de programação orientada a objetos, o que é intuitivo para quem programa em Python. \n
- Popularidade. Por ser mais antigo e ter o apoio do Google, o TensorFlow tem uma base de usuários e uma comunidade maiores. \n
- Flexibilidade. O PyTorch oferece mais flexibilidade graças aos grafos dinâmicos, permitindo mudanças em tempo de execução. \n
- Depuração e acompanhamento. O TensorBoard do TensorFlow traz ferramentas poderosas de visualização para depurar e acompanhar o treinamento. \n
- Serviço de modelos. O TensorFlow tem um sistema de serving mais maduro para deploy de modelos, tornando o processo mais fluido que no PyTorch. \n
PyTorch vs Keras
\n- \n
- Curva de aprendizado. PyTorch e Keras são amigáveis e fáceis de aprender. \n
- Pesquisa vs. desenvolvimento. Pesquisadores costumam preferir PyTorch pela flexibilidade e controle; desenvolvedores tendem a escolher Keras pela simplicidade e pelo estilo plug-and-play. \n
- Velocidade e depuração. Em geral, o PyTorch é mais rápido e oferece melhores recursos de depuração que o Keras. \n
- Tutoriais e datasets pequenos. O Keras brilha pela grande quantidade de tutoriais reaproveitáveis e funciona muito bem com conjuntos de dados menores. \n
TensorFlow vs Keras
\n- \n
- APIs de alto nível. Tanto TensorFlow quanto Keras oferecem APIs de alto nível para construir e treinar modelos. \n
- Natureza pythônica. Por ser escrito em Python, o Keras é mais amigável e intuitivo. \n
- Grandes volumes de dados. O TensorFlow costuma ser preferido para lidar com grandes datasets pela robustez e escalabilidade. \n
- Wrapper. O Keras atua como um wrapper para funções do TensorFlow, simplificando a interface para facilitar o uso. \n
Conclusão
\nTensorFlow, PyTorch e Keras estão entre os frameworks de deep learning mais usados. Cada um tem qualidades únicas que o tornam ótimo para certos cenários. A escolha do que aprender e usar depende do seu caso de uso e de fatores como seu nível técnico e o tempo disponível para estudar.
\nIndependentemente do framework escolhido, a DataCamp tem vários cursos úteis para você começar:
\n


