In TensorFlow, tf.layers
und tf.contrib.layers
teilen eine Menge Funktionalität (Standard-2D-Faltungsschichten, Batch-Normalisierung Schichten, etc). Ist der Unterschied zwischen diesen beiden nur, dass das contrib.layers
Paket noch experimentell ist, wo das layers
Paket als stabil betrachtet wird? Oder wird einer durch den anderen ersetzt? Andere Unterschiede? Warum sind diese beiden getrennt?TensorFlow - tf.layers vs tf.contrib.layers
Antwort
Sie haben Ihre eigene Frage beantwortet. Die Beschreibung auf der offiziellen Dokumentation des tf.contrib
Namespace ist:
contrib Modul mit flüchtigen oder experimentellen Code.
Also tf.contrib
ist für experimentelle Funktionen reserviert. APIs in diesem Namespace können sich zwischen den Versionen schnell ändern, während die anderen in der Regel nicht ohne eine neue Hauptversion auskommen. Insbesondere sind die Funktionen in tf.contrib.layers
nicht identisch mit denen in tf.layers
gefunden, obwohl einige von ihnen mit anderen Namen repliziert werden können.
Ob Sie sie verwenden sollten, hängt davon ab, ob Sie bereit sind, plötzliche Änderungen zu verarbeiten. Code, der nicht auf tf.contrib
beruht, ist möglicherweise einfacher auf zukünftige Versionen von TensorFlow zu migrieren.
- 1. TensorFlow: tf.layers vs Low-Level-API
- 2. Gewichte und Verzerrungen im tf.layers-Modul in TensorFlow 1.0
- 3. kernel_initializer in tf.layers api
- 4. Tensorflow VarLenFeature vs FixedLenFeature
- 5. tf.argmax() vs tf.arg_max() in TensorFlow
- 6. Gradient Descent vs Adagrad vs Momentum in TensorFlow
- 7. Regularisierung in TensorFlow Verwendung tf.contrib.layers.fully_connected
- 8. Tensorflow und Tensorboard: Schritt vs relativ
- 9. Convolution vs. Conv2d-Funktion in Tensorflow
- 10. Tensorflow Langsamer auf Python 3 vs. Python 2
- 11. Tensorflow Java API - 1. Vorhersage Zeit vs 2. oder mehr
- 12. Tensorflow numpy tensorflow
- 13. TensorFlow-Importfehler: TensorFlow-Importfehler
- 14. Tensorflow-Laufzeitfehler Debug
- 15. TensorFlow: Train-Modell für einen benutzerdefinierten Bilddatensatz
- 16. Duplizieren Sie ein Netzwerk in Tensorflow
- 17. Tensorflow Vector Rank/Abmessungen
- 18. Scalabiliity mit tensorflow
- 19. Bazel bauen Tensorflow-Anwendung außerhalb Tensorflow Quellbaum
- 20. Fütterung tensorflow Daten in Platzhalter Tensorflow
- 21. Tensorflow: In Bezug auf Tensorflow-Funktionen
- 22. TensorFlow REST Frontend aber nicht TensorFlow Serving
- 23. TensorFlow: Unpooling
- 24. TensorFlow: varscope.reuse_variables()
- 25. TensorFlow Segmentor
- 26. tensorflow Installationsprobleme
- 27. tensorflow - Speicherleck?
- 28. TensorFlow Inference
- 29. Tensorflow embedding_lookup
- 30. Tensorflow Grafikgröße
Gibt es einen Grund, warum ein Großteil der Funktionalität zwischen diesen Modulen dupliziert ist? Sind die Versionen in tf.contrib.layers, sagen wir, experimentelle Versionen mit besserer Optimierung oder so? Oder sind sie nur übrig geblieben, bevor das Schichtenmodul aus historischen Gründen zu tf hinzugefügt wurde? – erobertc
@erobert Das muss möglicherweise von Fall zu Fall ausgewertet werden. "Tf.contrib" ermöglicht es der Community oft, mit verschiedenen APIs zu experimentieren und dabei weniger stabile Funktionen bereitzustellen. Daher müssen sie nicht sofort verschwinden, nachdem ein neues Feature gelandet ist. Ebenso können sie auch bei einer Nebenversion komplett verändert oder aufgeräumt werden. Momentan haben zum Beispiel "tf.layers.conv2d" und "tf.contrib.layers.conv2d" unterschiedliche Prototypen und sind nicht immer austauschbar. –