繁体   English   中英

OSError:SavedModel 文件不存在于:C:\Users\Munib\New folder/{saved_model.pbtxt|saved_model.pb}

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

我想使用我的 keras 在 android 工作室训练过的 model。 我在 inte.net 上获得了这段代码,将我的代码从 keras 转换为 tensorflow-lite。 但是当我尝试代码时,我得到了这个错误:

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

我使用的代码从 keras 转换为 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()

首先最好使用相对路径而不是绝对路径。 其次,如果您使用model.save('my_model')那么 keras 将为您创建一个名为my_model的目录,您应该在其中找到一个扩展名为pbpbtxt的文件,这是您应该用于 tflite 转换器的目录

由于这篇文章,我已经能够调试这个错误: https://codeutility.org/savedmodel-file-does-not-exist-when-using-tensorflow-hub-stack-overflow/

对我有用的步骤是:

  1. 找到缺少先前加载的 model 的临时文件夹。在 mac 上,我使用以下命令执行此操作:

    打开 $TMPDIR

  2. 然后我去错误消息中找到临时目录,并将其删除。

OSError:SavedModel 文件不存在于:/var/folders/px/7npbfl2n0vs4yqfq5skm9pnw0000gn/T/tfhub_modules/ 87f7b0d2504a48175f521bcaed174acabc93672c /{saved_model.pbtxt|saved_model.pb}

我搜索了粗体文件名并找到了空目录。

然后,在删除它之后,我能够加载 model 并成功训练它。

基本上我从上面的文章中了解到,TensorFlow 将创建一个临时目录来保存加载的模型; 然而,大约几天后,folers(加载的模型)的内容将被删除。 然后,当您再次加载 model 时,TensorFlow 将路由到临时目录,但 model 将从临时目录中删除。

这是有道理的,并解释了为什么如果你的代码在过去几天运行得很好,然后突然出现这个错误,它可能与删除旧的临时目录有关。

在使用 google Colab 时,我也遇到了这个问题。 看来,我的 Colab 丢失了 model 所在的目录路径数据。 只需再次运行这两行并重试。 希望这能解决问题:

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

我在 conda 环境下安装 tensorflow 时遇到了这个问题。 卸载从 pip 安装的 h5py 并使用 conda 重新安装它可以解决我的问题。

pip uninstall h5py
conda install h5py

目录路径应以 saved_model 结尾。 例如,在您的情况下,它应该是 C:/Users/Munib/New folder/saved_model

只是分享我的想法:当我尝试运行 bert 编码器和预处理器 model 时,我也遇到了错误。 我上次跑的时候是这样的。

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")

当我在一周后尝试运行相同的程序时,它会出错。 为了解决这个问题,我下载了 .tar 文件并传递了文件路径来解决这个问题

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")

我有一个类似的问题,我有一个 keras model 我保存使用:

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

当我试图加载它时,我把整个文件名路径放成这样:

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

它给出了同样的错误

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

我通过仅提供保存时提供的 model 的名称来修复它

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

希望能帮助到你

您只需指定目录名称,其中 metadata.pb 和 model.pb 会自动存储以使其成功运行,不仅 model.pb 还 metadata.pb

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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