web-dev-qa-db-fra.com

Quelle est la difference entre tf.keras.layers et tf.layers?

Quelle est la différence entre tf.keras.layers et tf.layers?
Par exemple. tous les deux ont Conv2d, fournissent-ils des sorties différentes?
Y a-t-il des avantages à les mélanger (quelque chose comme une tf.keras.layers.Conv2d dans une couche cachée et dans la suivante, tf.layers.max_pool2d)?

5
Gabriel_Koch

tf.keras.layers.Conv2d est une couche tensorflow-keras tandis que tf.layers.max_pooling2d est une "couche native" de tensorflow

Vous ne pouvez pas utiliser une couche native directement dans un modèle Keras, car certains attributs requis par l'API Keras seront manquants.

Cependant, il est possible d'utiliser une couche native si elle est encapsulée dans une couche tensorflow-keras Lambda. Un lien vers la documentation est disponible ci-dessous.

https://www.tensorflow.org/api_docs/python/tf/keras/layers/Lambda

7
isaacsultan

Le module tf.layers correspond à la tentative de Tensorflow de créer une API semblable à celle de Keras alors que tf.keras.layers est un wrapper de compatibilité. En fait, la plupart des implémentations font référence à tf.layers, par exemple le tf.keras.layers.Dense hérite de l'implémentation core :

@tf_export('keras.layers.Dense')
class Dense(tf_core_layers.Dense, Layer):
  # ...

Étant donné que le module de compatibilité tf.keras est archivé séparément dans le référentiel Tensorflow, il se peut qu’il n’ait pas la même chose que ce que propose Keras. Je voudrais utiliser Keras directement ou tf.layers mais pas nécessairement les mélanger.

5
nuric

Au moins à partir de TensorFlow 1.12, tf.layers sont simplement des enveloppes autour de tf.keras.layers.

Quelques exemples:

tf.layers convolutionnel vient d'hériter du tf.keras.layers convolutionnel, voir le code source ici :

@tf_export('layers.Conv2D')
class Conv2D(keras_layers.Conv2D, base.Layer):

La même chose est vraie pour tous core tf.layers , par exemple:

@tf_export('layers.Dense')
class Dense(keras_layers.Dense, base.Layer):

Avec l'intégration de Keras dans TensorFlow, il serait peu logique de conserver plusieurs implémentations de couches différentes. tf.keras est en train de devenir l'API de haut niveau de facto pour TensorFlow. Par conséquent, tf.layers sont désormais des wrappers autour de tf.keras.layers.

1
Alex