简体   繁体   中英

OSError: SavedModel file does not exist at: C:\Users\Munib\New folder/{saved_model.pbtxt|saved_model.pb}

I wanted to use my keras trained model in android studio. I got this code on inte.net to convert my code from keras to tensorflow-lite. But when i tried code i got this error:

OSError: SavedModel file does not exist at: C:\Users\Munib\New folder/{saved_model.pbtxt|saved_model.pb}

The code i used from converting from keras to tensorflow-lite:

import tensorflow as tf
# Converting a SavedModel to a TensorFlow Lite model.
saved_model_dir = r"C:\Users\Munib\New folder"
converter = tf.lite.TFLiteConverter.from_saved_model(saved_model_dir)
tflite_model = converter.convert()

# Converting a tf.Keras model to a TensorFlow Lite model.
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()

# Converting ConcreteFunctions to a TensorFlow Lite model.
converter = tf.lite.TFLiteConverter.from_concrete_functions([func])
tflite_model = converter.convert()

First of all it's best to use relative path instead of absolute path. second, if you use model.save('my_model') then keras will create a directory for you with the name my_model in which you should find a file with the pb or pbtxt extension, this is the directory you should use for tflite converter

I have been able to debug this error thanks to this post: https://codeutility.org/savedmodel-file-does-not-exist-when-using-tensorflow-hub-stack-overflow/

The steps that worked for me were:

  1. Locate the temp folder that was missing a previously loaded model. On mac I did this using this command:

    open $TMPDIR

  2. Then I went and located the temp dir in the error message, and deleted it.

OSError: SavedModel file does not exist at: /var/folders/px/7npbfl2n0vs4yqfq5skm9pnw0000gn/T/tfhub_modules/ 87f7b0d2504a48175f521bcaed174acabc93672c /{saved_model.pbtxt|saved_model.pb}

I searched up the bolded file name and found the empty directory.

Then, after removing it, I was able to load the model and train it successfully.

Essentially what I understood from the article above, is that TensorFlow will create a temp directory to keep loaded models; however, after a few days or so, the contents of the folers (the loaded model) will be deleted. Then when you look to load a model again, TensorFlow will route to the temp dir, but the model will be deleted from the temp dir.

This makes sense and explains why if your code is running totally fine the past few days, and then all of the sudden gets this error, it probably has to do with deleting the old temp directory.

I also faced this problem when working on google Colab. It seemed, my Colab lose the directory path data where the model is located. Simply run these two lines again and try again. Hopefully, that'll solve the problem:

import os
os.chdir("/content/drive/My Drive/path/to/your/model")

I faced this problem with tensorflow installation under conda environment. Uninstalling h5py installed from pip and reinstall it using conda solve my problem.

pip uninstall h5py
conda install h5py

The directory path should end with saved_model. For example, In your case it should be C:/Users/Munib/New folder/saved_model

Just sharing my thought: I also got an error while I tried to run the bert encoder and preprocessor model. I ran last time when it's look like this.

bert_preprocess = hub.KerasLayer("https://tfhub.dev/tensorflow/bert_en_uncased_preprocess/3")
bert_encoder = hub.KerasLayer("https://tfhub.dev/tensorflow/bert_en_uncased_L-12_H-768_A-12/4")

It's giving errors while I am trying to run the same after a week. To resolve this issue I download the.tar file and pass the file path to resolve the issue .

bert_preprocess = hub.KerasLayer("<path>/bert_en_uncased_preprocess_3.tar")
bert_encoder = hub.KerasLayer("<path>/bert_en_uncased_L-12_H-768_A-12_4.tar")

I had a similar issue, i had a keras model i saved using:

my_model.save('./models/my_model')

and when i was trying to load it i put the whole file name path like this:

my_model = tf.keras.models.load_model('./models/my_model/saved_model.pb')

and it gave the same error

OSError: SavedModel file does not exist at: models/my_model/saved_model.pb/{saved_model.pbtxt|saved_model.pb}

i fixed it by only giving the name of the model i gave when saved it

my_model = tf.keras.models.load_model('./models/my_model')

Hope it helps

you have to specify just the directory name where metedata.pb and model.pb is automatically stored for its successful run it not just model.pb but also metadata.pb

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM