Quando queremos começar a fazer alguma coisa em Aprendizado Profundo de Máquina ou Deep Learning pode bater aquela dúvida,

por onde eu começo?

E geralmente quando bate essa dúvida ela é direcionada para o que é mais usado para Deep Learning na comunidade de ciência de dados

Keras e PyTorch

Quais são as diferenças entre os dois e por qual começar? Vamos tentar esclarecer essas dúvidas.

Quais são as diferenças entre Keras e PyTorch?

Ambos são estruturas que facilitam o desenvolvimento de implementações de Deep Learning, por isso são chamados de frameworks. Tanto o Keras quando o PyTorch procuram facilitar os processos de:

  • preparação de dados
  • construção do modelo
  • treinamento do modelo
  • salvamento e reutilização do modelo
  • teste do modelo
  • métricas do modelo

Ambos também fazem isso usando a linguagem Python. E nos dois podemos usar GPUs para processar nossos dados.

Até agora sabemos algumas semelhanças.

Os dois são frameworks, ambos procuram facilitar o ciclo de vida do desenvolvimento de Deep Learning, podemos usá-los com Python e com uma GPU.

O que é o Keras?

O Keras era um projeto de uma pessoa que se chama François Chollet. É possível usar o Keras como uma camada superior que permite acessar partes mais complexas de backends para Deep learning. Até hoje ele se descreve como uma API de Deep Learning.

Ao usar o Keras, é possível escolher como backend:

  • Theano
  • Tensorflow
  • CNTK

Como o uso do Keras com o Tensorflow foi ficando cada vez mais frequente, o François foi contratado pela Google e cada vez mais o Keras fica unido com o Tensorflow.

Por ser uma camada superior de acesso, muitas vezes se é necessário acessar camadas mais profundas é preciso entender também do backend que está sendo usado.

O que é o PyTorch?

O PyTorch foi desenvolvido por um grupo de pesquisa de inteligência artificial do Facebook chamado FAIR (Facebook Artificial Intelligence Research). No início havia apenas o Torch e depois envolveram o Torch no Python, fazendo um Python wrapper e foi criado o PyTorch.

Diferentemente do Keras, o Pytorch não é uma camada superior que permite que você use diferentes backends, ele é uma mistura de código que facilita o acesso superior às suas camadas mais profundas com código que reflete a necessidade de acesso à essas camadas profundas.

Neste caso, o PyTorch se torna um framework que mistura o alto nível com o baixo nível, sendo high-level e low-level simultaneamente quanto aos acessos de suas camadas.

Começo por Keras ou por PyTorch?

Depende.

Se considerarmos que o objetivo é o início do aprendizado e que queremos entender como fazemos um modelo de Deep learning, a sugestão é Keras.

O Keras acaba sendo mais popular que o PyTorch por enquanto.

Há mais tutoriais e exemplos de implementações disponíveis na web, escrever o código é mais alto nível, e é o framework mais usado em competições ganhadoras do Kaggle dado a sua praticidade.

E ao ir se aprofundando nos estudos é interessante aprender os backends, então entender o Tensorflow, o Theano, o CNTK.

Podemos ter recomendado o Keras agora, no entanto a comunidade do PyTorch está crescendo e podem acontecer mudanças no futuro.


Mais informações

O início por Keras é uma sugestão.

Também recomendamos que você teste e faça um exemplo simples com cada um deles e entenda qual flui melhor.

No final, o framework mais legal para você estudar também tem a ver com aquele que você se sente mais confortável usando.

Dê uma olhada nos sites e veja qual lhe parece mais interessante:

Site do Keras

Site do PyTorch

Também há tutoriais para que você tenha uma idéia do que é usar cada um deles:

Tutoriais do Keras

Tutoriais do PyTorch