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

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在其允许的版本中。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注