pickle.load无法在我的本地机器上打开一个(Stylegan2网络)pickle模型,但可以在云端打开。

问题描述 投票:0回答:1

Stylegan2使用网络pickle文件来存储ML模型。我将训练好的一个模型,转移到云服务器上打开。我通过以下设置从这个模型中生成图像很好。

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

然而,我无法在我的本地机器上打开网络pickle文件,尽管我一直在试图尽我所能地复制那个云设置。(我有正确的GPU hardware/drivers/etc.)

  • 本地 (Windows 10) Python 3.6.9, CUDA 10.1, tensorflow-gpu 1.15, CuDNN 7.6.5。
  • 需要一个库''。dnnlib'在PYTHONPATH中,并为一个。tf.Session() 拟初始化

我得到了一个关于pickle的断言错误。

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

我发现这个错误非常奇怪,因为网络pickle在云端工作--所以它是正确保存的。此外,我的本地设置可以打开其他网络pickle(即通过GET请求从互联网下载的pickle),使我认为我已经正确地设置了我的PYTHONPATH,并初始化了一个 "pickle"。tf.Session. 这些都是Stylegan repo中列出的先决条件。

"你可以在你自己的Python代码中导入网络,使用 pickle.load(). 为了让这个功能发挥作用,你需要包括以下内容 dnnlib 源目录下的PYTHONPATH,并通过调用默认的TensorFlow会话,创建一个默认的TensorFlow会话。dnnlib.tflib.init_tf()"

我不知道为什么我在一个环境中不能打开这个泡菜,但在另一个环境中可以。有谁有什么建议,我可以从哪里开始找?

tensorflow machine-learning pickle google-colaboratory
1个回答
0
投票

其实,我是通过打印出什么版本抛出的错误来解决的。打印的版本是'4'。我意识到这与pickle(HIGHEST_PROTOCOL)相匹配,我需要的是最新的stylegan2仓库的pull,其中包括pickle format_version 4的允许版本。

© www.soinside.com 2019 - 2024. All rights reserved.