Файл SavedModel не существует при использовании концентратора Tensorflow

При попытке использовать 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 ответа

Решение

Итак, простое удаление этой папки и повторный запуск функции hub.load() решает проблему.

Я пробовал вышеуказанное решение, но у меня это не сработало...

Вот что сработало:

  1. Загрузите модель с tfhub.dev с активами, переменными и файлом контрольной точки.pb.
  2. Убедитесь, что вы импортировали модуль tensorflow_text!

импортировать tensorflow_text

  1. Укажите путь к загруженной папке в операторе hub.load(), как в:

model =hub.load("/ Пользователи /bilguun/Desktop/ универсальный-кодировщик-многоязычный-большой_3/")

Такая ошибка возникает из-за того, что загруженная модель сохраняется во временной папке, созданной приложением.

Поскольку это временная папка, сохраненная в ней модель может быть удалена или даже папка может быть удалена.

При вызове команды hub.load() программа проверяет наличие временной папки, если папка не найдена, программа загружает данные из Интернета.

Но если папка найдена, а данных(или модели) там нет, то вместо загрузки из интернета выдает ошибку.

Это можно решить, полностью удалив временную папку.

В Mac доступ к временной папке можно получить с помощью команды «открыть $TMPDIR» на терминале (ссылка: https://osxdaily.com/2018/08/17/where-temp-folder-mac-access/). Имя папки можно получить из возникшей ошибки и легко удалить.

Я использовал i3d = hub.load(https://tfhub.dev/deepmind/i3d-kinetics-400/1).signatures['default']как показано здесь

Этот метод загрузки модели работал в тот день, но через несколько дней у меня возникла та же ошибка: OSError: файл SavedModel не существует по адресу: C:\Users\ catal \AppData\Local\Temp\tfhub_modules\092225fb776e28d6d64ac605ab6be03f18dd2027b {saved_model.p|saved_model.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'] и это сработало.

Итак, использование ответа Бильгууна действительно помогло в моем случае.

Другие вопросы по тегам