37 votes

Quelle est la différence entre Keras et tf.keras dans TensorFlow 1.1+ ?

Maintenant que TensorFlow 1.1 prend en charge l'API Keras sous tf.contrib.keras Lequel dois-je utiliser si j'ai l'intention d'utiliser Keras avec un backend TF ?

Est-ce que le tf.contrib.keras diffère-t-elle en quoi que ce soit d'une distribution Keras ordinaire ? (Les optimisations spécifiques de TF sur les structures de données internes me viennent à l'esprit). Y a-t-il un avantage à utiliser Keras et TensorFlow Core ensemble si j'utilise l'un ou l'autre ?

Ou est-ce que tf.contrib.keras simplement une copie de la même base de code que Keras mais sous un espace de noms différent ?

29voto

P-Gn Points 10410

tf.keras (anciennement tf.contrib.keras ) est une implémentation de keras 2 mise en œuvre exclusivement avec/pour tensorflow. Elle est hébergée sur le repo de tensorflow et a une base de code distincte de celle du repo officiel (le dernier commit dans le repo officiel est le tf-keras rama date de mai 2017 ).

En règle générale, si votre code utilise un code spécifique à tensorflow, dites que tout ce qui se trouve dans tf.data.* pour fournir des intrants ou tf.summary.* pour la visualisation dans tensorboard, il est plus simple de simplement utiliser tf.keras . (Certains peuvent même recommander no en utilisant l'implémentation Keras de référence avec TF à cause de problèmes occasionnels qu'elle rencontre avec cette boîte à outils ).

D'autre part, si vous envisagez de maintenir activement un code agnostique, l'utilisation du paquetage propre à Keras est votre seul choix.

Si vous ne vous souciez pas beaucoup d'être agnostique mais que vous n'utilisez pas de code spécifique à tensorflow, je vous conseillerais probablement d'opter pour tf.keras et commencer à utiliser le code spécifique à tensorflow, notamment. tf.data ce qui, à mon avis, change la donne.

EDITAR

J'ai assisté à une conférence de Chollet sur TF2 (je n'ai pas pu trouver d'enregistrement en ligne) au cours de laquelle il a dit en substance que le support des frameworks autres que TF finirait par être abandonné et que les développements futurs de Keras se feraient exclusivement dans le cadre de TF2. tf.keras .

D'après ce que je peux voir, c'est déjà le cas, car Le flux de commit de Keras devient mince ces jours-ci.

Cela a beaucoup de sens puisque, pour l'instant, le seul autre cadre DL populaire est pytorch, qui n'est pas pris en charge par Keras. Garder le code de Keras "agnostique" à tensorflow - le seul cadre majeur qu'il supporte - a de moins en moins de sens.

Donc aujourd'hui, ma réponse serait d'utiliser tf.keras par défaut, et gardez Keras pour les projets hérités qui seraient difficiles à migrer - c'est le choix le plus sûr pour Keras.

3 votes

tf.data which is a game-changer in my opinion - Pourriez-vous nous en dire plus à ce sujet ?

1 votes

Est-il possible de savoir maintenant quels Keras (Keras ou tf.Keras) peuvent fonctionner sur les TPU dans Google Colab ? J'utilisais Keras et j'ai réglé les paramètres d'exécution sur TPU, mais il est évident qu'il fonctionne avec des CPU.

1 votes

@saurabheights Le tf.data dans tensorflow est un joyau sous-estimé. Il vous permet d'écrire votre propre chargeur de données et vos propres augmentations avec les opérations standard de tensorflow, et il fonctionnera très efficacement en parallèle avec l'exécution de votre graphe sur GPU. AFAIK aucun autre framework n'offre ce mélange d'efficacité, de flexibilité et de simplicité.

12voto

RezaRob Points 111

Keras est mieux compris comme une spécification d'API, et non comme un base de code spécifique. En fait, à l'avenir, il y aura deux projets distincts de séparées de la spécification Keras : l'implémentation interne de TensorFlow, disponible sous le nom de tf.keras, écrite en pur TensorFlow et profondément compatible avec toutes les fonctionnalités de TensorFlow, et la version externe supportant à la fois Theano et TensorFlow (et probablement plus TensorFlow (et probablement d'autres backends à l'avenir).

https://blog.keras.io/introducing-keras-2.html

1voto

krishna Points 957

Récent François Chollet tweet suggère d'utiliser tf.keras .

Nous vous recommandons de passer votre code Keras à tf.keras.

Theano et CNTK ne sont plus en développement. En attendant, en tant que backends de Keras ils représentent moins de 4 % de l'utilisation de Keras. Les autres 96% des utilisateurs (dont plus de la moitié sont déjà sur tf.keras) sont mieux mieux servis par tf.keras.

Le développement de Keras se concentrera sur tf.keras à l'avenir.

Il est important de noter que nous chercherons à commencer à développer tf.keras dans son propre dépôt GitHub autonome à keras-team/keras afin de faciliter les afin de faciliter la contribution des tiers.

-4voto

dahoiv Points 22

S'il y a deux dépôts github, comment synchroniser les pull-over ? vers tf.keras et ce dépôt ? Y aura-t-il quelqu'un appliquera les changements d'un dépôt à l'autre ?

Les bases de code seront différentes, il ne sera donc pas nécessaire de répliquer demandes de pull. Pour les changements d'API, vous devez envoyer un PR à la spécification API elle-même, et les modifications apportées à la spécification de l'API seront répliquées dans toutes les bases de code.

https://github.com/fchollet/keras/issues/5299#issuecomment-278166426

5 votes

Mais cela ne répond pas vraiment à la question. Si je veux utiliser le backend TF, concrètement je dois import tf.contrib.keras o import keras ?

2 votes

Je ne comprends toujours pas. Si les API sont synchronisées, cela signifie-t-il que ces deux librairies sont les mêmes pour l'utilisateur final ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X