Файл 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() решает проблему.
Я пробовал вышеуказанное решение, но у меня это не сработало...
Вот что сработало:
- Загрузите модель с tfhub.dev с активами, переменными и файлом контрольной точки.pb.
- Убедитесь, что вы импортировали модуль tensorflow_text!
импортировать tensorflow_text
- Укажите путь к загруженной папке в операторе 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']
и это сработало.
Итак, использование ответа Бильгууна действительно помогло в моем случае.