Comment résoudre l'erreur AttributeError: module 'tensorflow' has no attribute 'Session' ?

Tensorflow est un outil d'apprentissage automatique créé par la société Google. Il possède notamment une interface pour interagir avec le langage Python. La version 2 a introduit plusieurs changements majeurs. Parmi eux, l'abandon des Sessions, qui ne sont plus utilisées. C'est pour cela que vous obtenez le message d'erreur "AttributeError: module 'tensorflow' has no attribute 'Session'" lorsque vous exécutez l'instruction "tf.Session()".

Une session est un mécanisme permettant d'exécuter un graphique ou une partie d'un graphique. Cela permettait dans la version 1 de gérer l'exécution des calculs au fur et à mesure de votre application. La version 2 utilise un système d'exécution en temps réel. Les sessions sont donc devenues inutiles et ont été enlevées du code principal du framework.

//Cette instruction ne fonctionne plus dans la version 2 de Tensorflow
maSession = tf.Session()

Si vous ne pouvez pas tout de suite migrer votre code vers la version 2 du framework, ce dernier fournit un module de compatibilité qui va contenir la même nomenclature que la version 1, à l'exception du module "contrib". Il s'agit du module "tf.compat.v1". Si vous l'utilisez, vous n'avez que peu de changements à écrire pour que la version 2 du framework puisse lancer votre application. En contrepartie, vous n'utiliserez pas les changements introduits par cette nouvelle version.

//Cette instruction fonctionne avec Tensorflow version 2
maSession = tf.compat.v1.Session()

Les équipes de Google ont fourni un document qui recense les instructions qui nécessitent d'utiliser ce module pour rester fonctionnelles : https://docs.google.com/spreadsheets/d/1FLFJLzg7WNP6JHODX5q8BDgptKafq_slHpnHVbJIteQ/edit#gid=0. Une fois que vous êtes prêt, vous pouvez consulter le guide de migration vers la version 2 du framework, afin de modifier ensuite votre code pour tirer parti des nouveautés du framework : https://www.tensorflow.org/guide/migrate.