[英]Scikit-learn model persistence fails despite the same package version and machine
我目前正在使用我在 anaconda 環境中構建的 KNN model。 model 是使用 scikit-learn 0.22.1 版和 pickle 4.0 版制作的。 為了從網站訪問這個腳本,我將所有代碼移動到同一台計算機上的 web 服務器上,並使用 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'
鑒於我使用的是相同的 package 版本和相同的計算機架構,我不明白為什么會拋出這個錯誤。
事實證明,我在兩個實例中都安裝了 python 3.7.6,但有一個用於開發代碼的 64 位環境和一個用於部署代碼的 32 位環境。 卸載 32 位 python 並將其替換為 64 位解決了該問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.