pickle.load не может открыть модель рассола (сеть Stylegan2) на моей локальной машине, но может в облаке - PullRequest
0 голосов
/ 28 апреля 2020

Stylegan2 использует файлы сетевого выбора для хранения моделей ML. Я перенес обученную одну модель, которую я могу открыть на облачных серверах. Я генерировал изображения из этой модели в порядке со следующей настройкой:

  • Google Colab: Python 3.6.9, CUDA 10.1, tenorflow-gpu 1.15, CuDNN 7.6.5

Тем не менее, я не могу открыть файл сетевого выбора на моем локальном компьютере, хотя я пытался воспроизвести эту облачную установку как можно лучше. (У меня есть права GPU hardware/drivers/etc.)

  • Локальный (Windows 10) Python 3.6.9, CUDA 10.1, tenorflow-GPU 1.15, CuDNN 7.6.5
  • Требуется, чтобы в PYTHONPATH была библиотека 'dnnlib', а для инициализации tf.Session()

Я получил ошибку утверждения о рассоле.

**Assertion error**: `assert state["version"] in [2,3]`

Я нахожу эту ошибку очень странной, потому что сетевой фильтр работает в облаке - поэтому он был сохранен правильно. Кроме того, моя локальная установка может открыть другие сетевые настройки (ie. Загруженные из inte rnet через GET-запросы), что заставляет меня думать, что я правильно настроил PYTHONPATH и инициализировал tf.Session. Это предварительные условия, перечисленные в репозитории Stylegan:

"Вы можете импортировать сети в своем собственном коде Python, используя pickle.load(). Чтобы это работало, вам необходимо включить источник dnnlib каталог в PYTHONPATH и создать сеанс TensorFlow по умолчанию, вызвав dnnlib.tflib.init_tf() "

Я не уверен, почему я не могу открыть этот рассол в одной среде, но могу в другой. У кого-нибудь есть предложения относительно того, где я мог бы начать искать?

1 Ответ

0 голосов
/ 28 апреля 2020

На самом деле, я понял это, распечатав, какая версия выдает ошибку. Версия была напечатана «4». Я понял, что это соответствует pickle (HIGHEST_PROTOCOL) и что мне нужно было самое новое извлечение репозитория Stylegan2, которое включало pickle format_version 4 в свои разрешенные версии.

...