Stylegan2使用网络pickle文件来存储机器学习模型。我传输并训练了一个模型,能够在云服务器上打开它。使用以下设置,我能够很好地从这个模型生成图像:
- 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
- 需要在PYTHONPATH中包含一个名为’
dnnlib
‘的库,并初始化一个tf.Session()
我遇到了一个关于pickle的断言错误。
**断言错误**: `assert state["version"] in [2,3]`
我觉得这个错误很奇怪,因为网络pickle在云端是可以工作的——所以它被正确保存了。此外,我的本地设置可以打开其他网络pickle(即,通过GET请求从互联网下载的),这让我认为我已经正确设置了PYTHONPATH并初始化了一个tf.Session
。这些是Stylegan仓库中列出的前提条件:
“您可以使用
pickle.load()
在自己的Python代码中导入网络。为了使其工作,您需要在PYTHONPATH中包含dnnlib
源目录,并通过调用dnnlib.tflib.init_tf()
创建一个默认的TensorFlow会话。”
我不确定为什么在一种环境中无法打开这个pickle,而在另一种环境中可以。有人对我在哪里开始查找有任何建议吗?
回答:
实际上,通过打印出导致错误的版本,我解决了这个问题。打印出的版本是’4’。我意识到这与pickle的(HIGHEST_PROTOCOL)相匹配,我需要的是最新的Stylegan2仓库拉取,它包含了pickle format_version 4在其允许的版本中。