web-dev-qa-db-fra.com

Quelle est la différence entre un modèle Keras Tensorflow et un estimateur?

Les modèles Tensorflow Keras et les estimateurs Tensorflow sont capables d’entraîner des modèles de réseau neuronal et de les utiliser pour prévoir de nouvelles données. Ces deux API de haut niveau reposent sur l'API TensorFlow de bas niveau. Alors, quand devrais-je utiliser l'un sur l'autre?

39
d4nyll

Contexte

L'API Estimators a été ajouté à Tensorflow dans la version 1.1 et fournit une abstraction de haut niveau sur les opérations principales de Tensorflow de niveau inférieur. Il fonctionne avec une instance Estimator, qui est la représentation de haut niveau d'un modèle complet par TensorFlow.

Keras est similaire à l'API Estimators dans la mesure où il résume les composants de modèle d'apprentissage en profondeur tels que les couches, les fonctions d'activation et les optimiseurs, afin de faciliter la tâche des développeurs. C'est une bibliothèque au niveau du modèle, et ne gère pas les opérations de bas niveau, qui est le travail de bibliothèques de manipulation de tenseurs, ou backends . Keras supporte trois moteurs - Tensorflow , Theano et CNTK .

Keras ne faisait pas partie de Tensorflow jusqu'à ce que version 1.4. (2 nov 2017). Maintenant, quand vous utilisez tf.keras (ou parlez de "Tensorflow Keras"), vous utilisez simplement l’interface Keras avec le backend Tensorflow pour construire et former votre modèle.

Ainsi, l'API Estimator et l'API Keras fournissent toutes deux une API de haut niveau par rapport à l'API Tensorflow principale de bas niveau. Vous pouvez utiliser l'une ou l'autre pour former votre modèle. Mais dans la plupart des cas, si vous travaillez avec Tensorflow, vous voudrez utiliser l'API Estimators pour les raisons énumérées ci-dessous.

Distribution

Vous pouvez effectuer une formation distribuée sur plusieurs serveurs avec l'API Estimators, mais pas avec l'API Keras.

Dans le Tensorflow Keras Guide , il est indiqué que:

L'API Estimateurs est utilisé pour les modèles de formation pour les environnements distribués .

Et du Guide du estimateur Tensorflow , il est indiqué que:

Vous pouvez exécuter des modèles basés sur Estimator sur un hôte local ou dans un environnement multi-serveur distribué sans modifier votre modèle. De plus, vous pouvez exécuter des modèles basés sur Estimator sur des processeurs, des GPU ou des TPU sans recoder votre modèle.

Estimateur pré-fabriqué

Tandis que Keras fournit des abstractions qui facilitent la construction de vos modèles, vous devez toujours écrire du code pour construire votre modèle. Avec les estimateurs, Tensorflow fournit des estimateurs préétablis, qui sont des modèles que vous pouvez utiliser tout de suite, simplement en branchant les hyperparamètres.

Les estimateurs préconfigurés sont similaires à votre façon de travailler avec scikit-learn . Par exemple, le tf.estimator.LinearRegressor de Tensorflow est similaire à sklearn.linear_model.LinearRegression de scikit-learn.

Intégration avec d'autres outils Tensorflow

Tensorflow fournit un outil de visualisation appelé TensorBoard qui vous permet de visualiser votre graphique et vos statistiques. En utilisant un estimateur, vous pouvez facilement enregistrer les résumés à visualiser avec Tensorboard.

Conversion du modèle de Keras en estimateur

Pour migrer un modèle de Keras vers un estimateur, utilisez le tf.keras.estimator.model_to_estimator méthode.

53
d4nyll

D'après ce que je comprends, l'estimateur sert à la formation de données à grande échelle et sert uniquement à la production, car le moteur de cloud ML ne peut accepter que l'estimateur.

La description ci-dessous de l'un des tensorflow doc mentionnait ceci:

"L'API Estimators est utilisé pour les modèles de formation pour les environnements distribués. Il cible les cas d'utilisation du secteur, tels que la formation distribuée sur des jeux de données volumineux pouvant exporter un modèle pour la production."

0
Jane Li