O que mais o TensorFlow oferece às keras?

16

Estou ciente de que o keras serve como uma interface de alto nível para o TensorFlow.

Mas parece-me que o keras pode fazer muitas funcionalidades por si só (entrada de dados, criação de modelo, treinamento, avaliação).

Além disso, algumas das funcionalidades do TensorFlow podem ser portadas diretamente para keras (por exemplo, é possível usar uma função tf métrica ou perda em keras).

Minha pergunta é: o que o TensorFlow oferece que não pode ser reproduzido em keras?

Javier
fonte

Respostas:

15

As estruturas de Deep Learning operam em 2 níveis de abstração:

  • Nível inferior : é aqui que estruturas como Tensorflow, MXNet, Theano e PyTorch. Este é o nível em que operações matemáticas como multiplicação de matriz generalizada-matriz e primitivas de redes neurais como operações convolucionais são implementadas.
  • Nível superior : é aqui que estão as estruturas como Keras. Nesse nível, as primitivas de nível inferior são usadas para implementar a abstração de redes neurais, como camadas e modelos. Geralmente, nesse nível, outras APIs úteis, como economia de modelo e treinamento de modelo, também são implementadas.

Você não pode comparar o Keras e o TensorFlow porque eles ficam em diferentes níveis de abstração. Também quero aproveitar esta oportunidade para compartilhar minha experiência de uso do Keras:

  • Não concordo que Keras seja útil apenas para trabalhos básicos de Deep Learning. Keras é uma API lindamente escrita. A natureza funcional da API ajuda você completamente e sai do caminho para aplicativos mais exóticos. O Keras não bloqueia o acesso a estruturas de nível inferior.
  • Keras resulta em um código muito mais legível e sucinto.
  • O modelo Keras APIs de serialização / desserialização, retornos de chamada e streaming de dados usando geradores Python é muito maduro.
  • Keras foi declarada a abstração de alto nível oficial do TensorFlow.
gatinha
fonte
9

Se você usa o TensorFlow como back-end no keras, eles compartilham mais ou menos a mesma funcionalidade. Através de keras.backendvocê, as funções de acesso ao TensorFlow, enquanto tf.kerasvocê tem acesso a toda a API do keras através do TensorFlow.

Como esse é o caso, sugiro que fique com o keras e, se achar que algo está faltando (por exemplo, uma métrica ou uma função de perda), você pode importá-lo através do TensorFlow.

TmBrdy
fonte
5

Keras, como você diz, contém toda a funcionalidade, mas fora da caixa, ele roda apenas na CPU. Ao conectar um back-end como o TensorFlow ou o CNTK (que eu pessoalmente prefiro), você libera o poder da GPU, que pode acelerar enormemente algumas cargas de trabalho de ML, principalmente de DL. Se você não possui uma GPU discreta, os benefícios são mínimos.

Na maioria das vezes, na prática, você pode definir seu back-end e esquecê-lo, e trabalhar inteiramente no Keras, até trocar seu back-end por outro e comparar o desempenho. Portanto, não há necessidade de aprender as especificidades do TF, a menos que você queira codificar diretamente em um nível inferior.

Gaius
fonte
5

Dado que o TensorFlow é uma biblioteca de nível mais baixo do que o Keras em geral, você verá que isso oferece flexibilidade extra e desempenho aprimorado (embora relativamente pequeno, depende principalmente de como você escreve seu código). Eu diria que, se você está pesquisando ou desenvolvendo novos tipos de redes neurais, o conhecimento do TensorFlow seria muito útil. Fora isso, você deve se dar bem com Keras, embora a compreensão de como o TensorFlow funcione ainda possa ser útil se você o estiver usando como back-end.

No entanto, há algum tempo, li que o Keras e o TensorFlow se tornarão mais integrados, o que tornaria a vida muito mais fácil para você.

Obviamente, essa é apenas a minha opinião pessoal; portanto, gostaria de apontar alguns artigos extras para que você possa ler um pouco. Esta discussão no Kaggle fornece uma ótima visão geral dos argumentos e quando usar quais. Postagem média sobre este tópico.

Felix van Doorn
fonte
5

Todo iniciante tem essa consulta. Sempre parece que o Keras resolve as funcionalidades básicas, como entrada de dados, criação de modelo, treinamento, avaliação em menos linhas de código.

Porém, quando você começa a desenvolver um modelo de ML do zero, percebe que pode programar muita matemática no NN e a biblioteca tensorflow fornece muitas funcionalidades e controle, tornando esses conceitos práticos. Os aspectos matemáticos do aprendizado podem ser facilmente visualizados e criados usando NN feitos usando tf.

abunickabhi
fonte