13

尝试使用 中的hub.load函数时tensorflow_hub,出现OSError: SavedModel file does not exist at:错误。

奇怪的是它几天前就起作用了,所以我不太明白为什么我现在会收到这个错误。

重现代码:

import tensorflow as tf
import tensorflow_hub as hub

URL = 'https://tfhub.dev/google/universal-sentence-encoder/4'
embed = hub.load(URL)

收到的具体错误:

OSError                                   Traceback (most recent call last)
<ipython-input-11-dfb80f0299b2> in <module>
      1 URL = 'https://tfhub.dev/google/universal-sentence-encoder/4'
----> 2 embed = hub.load(URL)

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow_hub/module_v2.py in load(handle, tags)
    100   if tags is None and is_hub_module_v1:
    101       tags = []
--> 102   obj = tf_v1.saved_model.load_v2(module_path, tags=tags)
    103   obj._is_hub_module_v1 = is_hub_module_v1  # pylint: disable=protected-access
    104   return obj

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py in load(export_dir, tags)
    576     ValueError: If `tags` don't match a MetaGraph in the SavedModel.
    577   """
--> 578   return load_internal(export_dir, tags)
    579 
    580 

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/load.py in load_internal(export_dir, tags, loader_cls)
    586     tags = nest.flatten(tags)
    587   saved_model_proto, debug_info = (
--> 588       loader_impl.parse_saved_model_with_debug_info(export_dir))
    589 
    590   if (len(saved_model_proto.meta_graphs) == 1 and

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/loader_impl.py in parse_saved_model_with_debug_info(export_dir)
     54     parsed. Missing graph debug info file is fine.
     55   """
---> 56   saved_model = _parse_saved_model(export_dir)
     57 
     58   debug_info_path = os.path.join(

~/opt/anaconda3/lib/python3.7/site-packages/tensorflow/python/saved_model/loader_impl.py in parse_saved_model(export_dir)
    111                   (export_dir,
    112                    constants.SAVED_MODEL_FILENAME_PBTXT,
--> 113                    constants.SAVED_MODEL_FILENAME_PB))
    114 
    115 

OSError: SavedModel file does not exist at: /var/folders/77/rvfl368x44s51r8dc3b6l2rh0000gn/T/tfhub_modules/063d866c06683311b44b4992fd46003be952409c/{saved_model.pbtxt|saved_model.pb}
4

4 回答 4

33

因此,只需删除该文件夹并再次运行 hub.load() 函数即可解决问题

于 2020-07-26T22:42:53.190 回答
3

我已经尝试了上述解决方案,但它对我不起作用......

这是有效的:

  1. 从 tfhub.dev 下载带有资产、变量和 .pb 检查点文件的模型。
  2. 确保导入tensorflow_text模块!

导入张量流文本

  1. 在hub.load()语句中指定下载的文件夹路径,如下所示:

model = hub.load("/Users/bilguun/Desktop/universal-sentence-encoder-multilingual-large_3/")

于 2020-09-28T06:15:40.180 回答
0

我正在使用i3d = hub.load(https://tfhub.dev/deepmind/i3d-kinetics-400/1).signatures['default']如图所示here

这种加载模型的方法在那天有效,但几天后我得到了同样的错误:OSError: SavedModel file does not exist at: C:\Users\catal\AppData\Local\Temp\tfhub_modules\092225fb776e28d6d64ac605ab6be03f18dd2027{saved_model.pbtxt |保存的模型.pb}

在做了一些研究之后,我了解到 saved_model 文件位置(在错误中指定)是临时的,所以即使那个文件夹仍然存在,里面也没有 saved_model.pb 了。所以我下载了这里链接的模型:https ://tfhub.dev/deepmind/i3d-kinetics-400/1并设置i3d = hub.load("C:\\absolute_path_to_saved_model_folder").signatures['default']并且它工作。

所以使用 Bilguun 的回答对我来说真的很有帮助。

于 2021-05-24T21:29:06.737 回答
0

发生这种错误是因为下载的模型保存在应用程序创建的临时文件夹中。

由于它是一个临时文件夹,因此保存在其中的模型可能会被删除,甚至可以删除该文件夹。

调用 hub.load() 命令时,程序会检查临时文件夹,如果找不到该文件夹​​,程序将从 Internet 下载数据。

但是,如果找到该文件夹​​并且数据(或模型)不存在,而不是从 Internet 下载,则会引发错误。

可以通过完全删除临时文件夹来解决。

在 Mac 中,可以通过终端上的命令“open $TMPDIR”访问临时文件夹(参考:https ://osxdaily.com/2018/08/17/where-temp-folder-mac-access/ )。文件夹的名称可以从引发的错误中获取,并且可以轻松删除。

于 2022-01-21T18:33:39.240 回答