Qu'est-ce que TensorFlow offre de plus aux keras?

16

Je sais que les keras servent d'interface de haut niveau avec TensorFlow.

Mais il me semble que les keras peuvent faire à eux seuls de nombreuses fonctionnalités (saisie de données, création de modèle, formation, évaluation).

De plus, certaines fonctionnalités de TensorFlow peuvent être portées directement sur les keras (par exemple, il est possible d'utiliser une fonction tf métrique ou de perte dans les keras).

Ma question est, qu'est-ce que TensorFlow offre qui ne peut pas être reproduit en kéros?

Javier
la source

Réponses:

15

Les frameworks Deep Learning opèrent à 2 niveaux d'abstraction:

  • Niveau inférieur : c'est là que se trouvent les frameworks comme Tensorflow, MXNet, Theano et PyTorch. Il s'agit du niveau où les opérations mathématiques comme la multiplication matrice généralisée-matrice et les primitives de réseau neuronal comme les opérations convolutionnelles sont implémentées.
  • Niveau supérieur : c'est là que se trouvent des frameworks comme Keras. À ce niveau, les primitives de niveau inférieur sont utilisées pour implémenter l'abstraction du réseau neuronal comme les couches et les modèles. Généralement, à ce niveau, d'autres API utiles, telles que l'enregistrement de modèles et la formation de modèles, sont également implémentées.

Vous ne pouvez pas comparer Keras et TensorFlow car ils se situent à différents niveaux d'abstraction. Je veux également profiter de cette occasion pour partager mon expérience d'utilisation de Keras:

  • Je ne suis pas d'accord que Keras n'est utile que pour le travail de base du Deep Learning. Keras est une API magnifiquement écrite. La nature fonctionnelle de l'API vous aide complètement et vous met à l'écart pour des applications plus exotiques. Keras ne bloque pas l'accès aux frameworks de niveau inférieur.
  • Keras donne un code beaucoup plus lisible et succinct.
  • Le modèle Keras API de sérialisation / désérialisation, les rappels et le streaming de données à l'aide de générateurs Python sont très matures.
  • Keras a été déclaré abstraction officielle de haut niveau pour TensorFlow.
minou
la source
9

Si vous utilisez TensorFlow comme backend dans les keras, ils partagent plus ou moins la même fonctionnalité. Grâce à keras.backendvous, vous accédez à des fonctions TensorFlow, tandis que tf.kerasvous avez accès à l'ensemble des API de keras via TensorFlow.

Comme c'est le cas, je vous suggère de vous en tenir aux kéros et si vous trouvez qu'il manque quelque chose (par exemple une métrique ou une fonction de perte), vous pouvez l'importer via TensorFlow.

TmBrdy
la source
5

Keras comme vous le dites contient toutes les fonctionnalités mais hors de la boîte, il ne fonctionne que sur CPU. En branchant un backend tel que TensorFlow ou CNTK (que je préfère personnellement), vous débloquez la puissance du GPU qui peut considérablement accélérer certaines charges de travail ML, en particulier les charges de travail DL. Si vous n'avez pas de GPU discret, les avantages sont minimes.

La plupart du temps dans la pratique, vous pouvez simplement définir votre backend et l'oublier, et travailler entièrement dans Keras, même échanger votre backend pour un autre et comparer les performances. Il n'est donc pas nécessaire d'apprendre les spécificités de TF, sauf si vous souhaitez coder directement à un niveau inférieur.

Gaius
la source
5

Étant donné que TensorFlow est une bibliothèque de plus bas niveau que Keras en général, vous verrez que cela offre une flexibilité supplémentaire et des performances améliorées (bien que relativement mineures, cela dépend principalement de la façon dont vous écrivez votre code). Je dirais que si vous êtes en recherche ou en développement de nouveaux types de réseaux de neurones, la connaissance de TensorFlow serait très utile. En dehors de cela, vous devriez être bien avec Keras bien que comprendre comment fonctionne TensorFlow pourrait toujours être utile si vous l'utilisez comme backend.

Cependant, il y a quelque temps, j'ai lu que Keras et TensorFlow deviendront plus intégrés, ce qui vous faciliterait la vie.

Évidemment, ce n'est que mon opinion personnelle, donc je voudrais vous signaler quelques articles supplémentaires afin que vous puissiez faire votre propre lecture. Cette discussion sur Kaggle donne un excellent aperçu des arguments et quand les utiliser. Article moyen sur ce sujet.

Felix van Doorn
la source
5

Chaque débutant a cette requête. Il semble toujours que Keras résout les fonctionnalités de base comme la saisie de données, la création de modèles, la formation, l'évaluation en moins de lignes de code.

Mais lorsque vous commencez à développer un modèle ML à partir de zéro, vous vous rendez compte que vous pouvez programmer beaucoup de mathématiques dans le NN, et la bibliothèque tensorflow fournit de nombreuses fonctionnalités et contrôle rendant ces concepts pratiques. Les aspects mathématiques de l'apprentissage peuvent être facilement visualisés et réalisés à l'aide de NN à l'aide de tf.

abunickabhi
la source