RuntimeError: get_session is not available when using TensorFlow 2.0

Carvia Tech | December 01, 2019 | 2 min read | 1,688 views | Flask - Python micro web framework


Here, we will see how we can upgrade our code to work with tensorflow 2.0.

This error is usually faced when we are loading pre-trained model with tensorflow session/graph or we are building flask api over a pre-trained model and loading model in tensorflow graph to avoid collision of sessions while application is getting multiple requests at once or say in case of multi-threadinng

After tensorflow 2.0 upgrade, i also started facing above error in one of my project when i had built api of pre-trained model with flask. So i looked around in tensorflow 2.0 documents to find a workaround, to avoid this runtime error and upgrade my code to work with tensorflow 2.0 as well rather than downgrading it to tensorflow 1.x .

But this project was not working after tensorflow upgrade and was facing runtime error.

Stacktrace of error was something like below:

 File "/Users/Upasana/Documents/playground/deploy-keras-model-in-production/src/main.py", line 37, in model_predict
    with backend.get_session().graph.as_default() as g:
  File "/Users/Upasana/Documents/playground/deploy-keras-model-in-production/venv-tf2/lib/python3.6/site-packages/keras/backend/tensorflow_backend.py", line 379, in get_session
    '`get_session` is not available '
RuntimeError: `get_session` is not available when using TensorFlow 2.0.
Related code to get model
with backend.get_session().graph.as_default() as g:
        model = SentimentService.get_model1()
Related code to load model
def load_deep_model(self, model):
        json_file = open('./src/mood-saved-models/' + model + '.json', 'r')
        loaded_model_json = json_file.read()
        loaded_model = model_from_json(loaded_model_json)

        loaded_model.load_weights("./src/mood-saved-models/" + model + ".h5")

        loaded_model._make_predict_function()
        return loaded_model

get_session is removed in tensorflow 2.0 and hence not available.

so, in order to load saved model we switched methods. Rather than using keras’s load_model, we used tensorflow to load model so that we can load model using distribution strategy.

Note

The tf.distribute.Strategy API provides an abstraction for distributing your training across multiple processing units.

New code to get model
another_strategy = tf.distribute.MirroredStrategy()
with another_strategy.scope():
    model = SentimentService.get_model1()
New code to load model
def load_deep_model(self, model):
        loaded_model = tf.keras.models.load_model("./src/mood-saved-models/"model + ".h5")
        return loaded_model

This worked and solved the problem with runtime error of get_session not available in tensorflow 2.0 . You can refer to Tensorflow 2.0 upgraded article too

Hope, this will solve your problem too. Thanks for following this article.


Top articles in this category:
  1. Top 100 interview questions on Data Science & Machine Learning
  2. Google Data Scientist interview questions with answers
  3. Python Flask Interview Questions
  4. Python coding challenges for interviews
  5. Deploying Keras Model in Production with TensorFlow 2.0
  6. Why use feature selection in machine learning
  7. Installing PySpark with Jupyter notebook on Ubuntu 18.04 LTS



Find more on this topic:
Machine Learning image
Machine Learning

Data science, machine learning, python, R, big data, spark, the Jupyter notebook, and much more

Last updated 1 week ago


Recommended books for interview preparation:

This website uses cookies to ensure you get the best experience on our website. more info