【问题标题】:Scikit-learn model persistence fails despite the same package version and machine尽管包版本和机器相同,Scikit-learn 模型持久性仍然失败
【发布时间】:2020-10-04 23:16:07
【问题描述】:

我目前正在使用我在 anaconda 环境中构建的 KNN 模型。该模型是使用 scikit-learn 0.22.1 版和 pickle 4.0 版制作的。为了从网站访问这个脚本,我将所有代码移动到同一台计算机上的网络服务器上,并使用 PHP 从命令行执行它。

但是,当我这样做时,它依赖于常规的 python 安装。因此,为了确保一切都井井有条,我使用 pip 安装了所有版本正确的软件包。但是当我从命令行运行代码时,它会抛出以下错误:

Traceback (most recent call last):
  File "script.py", line 78, in <module>
    knn = pickle.load(file);
  File "sklearn\neighbors\_binary_tree.pxi", line 1180, in sklearn.neighbors._kd_tree.BinaryTree.__setstate__
  File "sklearn\neighbors\_binary_tree.pxi", line 1122, in sklearn.neighbors._kd_tree.BinaryTree._update_memviews
  File "sklearn\neighbors\_binary_tree.pxi", line 236, in sklearn.neighbors._kd_tree.get_memview_ITYPE_1D
ValueError: Buffer dtype mismatch, expected 'ITYPE_t' but got 'long long'

鉴于我使用相同的软件包版本和相同的计算机架构,我无法理解为什么会抛出此错误。

【问题讨论】:

    标签: python scikit-learn pickle


    【解决方案1】:

    事实证明,我在两个实例中都安装了 python 3.7.6,但有一个用于开发代码的 64 位环境和一个用于部署代码的 32 位环境。卸载 32 位 python 并用 64 位替换它解决了这个问题。

    【讨论】:

      猜你喜欢
      • 2017-12-17
      • 2022-09-27
      • 2020-06-21
      • 1970-01-01
      • 2019-03-30
      • 2018-05-26
      • 2021-05-05
      • 1970-01-01
      • 2017-03-16
      相关资源
      最近更新 更多