RuntimeWarning: numpy.dtype आकार बदल गया, बाइनरी असंगतता का संकेत दे सकता है


148

मेरे पास सहेजे गए एसवीएम मॉडल को लोड करने की कोशिश के लिए यह त्रुटि है। मैंने sklearn, NumPy और SciPy को अनइंस्टॉल करने की कोशिश की है, नवीनतम संस्करणों को फिर से एक साथ पुन: स्थापित कर रहा है (पाइप का उपयोग करके)। मुझे अभी भी यह त्रुटि मिल रही है। क्यों?

In [1]: import sklearn; print sklearn.__version__
0.18.1
In [3]: import numpy; print numpy.__version__
1.11.2
In [5]: import scipy; print scipy.__version__
0.18.1
In [7]: import pandas; print pandas.__version__
0.19.1

In [10]: clf = joblib.load('model/trained_model.pkl')
---------------------------------------------------------------------------
RuntimeWarning                            Traceback (most recent call last)
<ipython-input-10-5e5db1331757> in <module>()
----> 1 clf = joblib.load('sentiment_classification/model/trained_model.pkl')

/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/numpy_pickle.pyc in load(filename, mmap_mode)
    573                     return load_compatibility(fobj)
    574
--> 575                 obj = _unpickle(fobj, filename, mmap_mode)
    576
    577     return obj

/usr/local/lib/python2.7/dist-packages/sklearn/externals/joblib/numpy_pickle.pyc in _unpickle(fobj, filename, mmap_mode)
    505     obj = None
    506     try:
--> 507         obj = unpickler.load()
    508         if unpickler.compat_mode:
    509             warnings.warn("The file '%s' has been generated with a "

/usr/lib/python2.7/pickle.pyc in load(self)
    862             while 1:
    863                 key = read(1)
--> 864                 dispatch[key](self)
    865         except _Stop, stopinst:
    866             return stopinst.value

/usr/lib/python2.7/pickle.pyc in load_global(self)
   1094         module = self.readline()[:-1]
   1095         name = self.readline()[:-1]
-> 1096         klass = self.find_class(module, name)
   1097         self.append(klass)
   1098     dispatch[GLOBAL] = load_global

/usr/lib/python2.7/pickle.pyc in find_class(self, module, name)
   1128     def find_class(self, module, name):
   1129         # Subclasses may override this
-> 1130         __import__(module)
   1131         mod = sys.modules[module]
   1132         klass = getattr(mod, name)

/usr/local/lib/python2.7/dist-packages/sklearn/svm/__init__.py in <module>()
     11 # License: BSD 3 clause (C) INRIA 2010
     12
---> 13 from .classes import SVC, NuSVC, SVR, NuSVR, OneClassSVM, LinearSVC, \
     14         LinearSVR
     15 from .bounds import l1_min_c

/usr/local/lib/python2.7/dist-packages/sklearn/svm/classes.py in <module>()
      2 import numpy as np
      3
----> 4 from .base import _fit_liblinear, BaseSVC, BaseLibSVM
      5 from ..base import BaseEstimator, RegressorMixin
      6 from ..linear_model.base import LinearClassifierMixin, SparseCoefMixin, \

/usr/local/lib/python2.7/dist-packages/sklearn/svm/base.py in <module>()
      6 from abc import ABCMeta, abstractmethod
      7
----> 8 from . import libsvm, liblinear
      9 from . import libsvm_sparse
     10 from ..base import BaseEstimator, ClassifierMixin

__init__.pxd in init sklearn.svm.libsvm (sklearn/svm/libsvm.c:10207)()

RuntimeWarning: numpy.dtype size changed, may indicate binary incompatibility. Expected 96, got 80

अद्यतन: ठीक है, यहाँ का पालन ​​करके , और

pip uninstall -y scipy scikit-learn
pip install --no-binary scipy scikit-learn

त्रुटि अब चली गई है, हालांकि मुझे अभी भी पता नहीं है कि यह पहली जगह में क्यों हुआ ...


3
--no-use-wheelआपके सिस्टम में जो कुछ भी है उसके खिलाफ स्रोत से मॉड्यूल को recompiles।
ivan_pozdeev

17
पाइप के नए संस्करणों में इस कमांड का नाम बदल दिया गया है --no-binary
s_kirkiles

1
हां, यह मेरे लिए काम किया pip install --no-binary :all: pandas:। FWIW मैं Python 3.6.6 :: Anaconda, Inc.केवल पायथॉन संस्करण के शीर्ष पर एक ताजा VE बिल्ड पर यह त्रुटि प्राप्त कर रहा था requestsऔर pandasपर्यावरण में स्थापित था।
10

अब साइबरॉन 0.29 में तय किया जाना चाहिए, जैसा कि नीचे
मैटिप

आपको gfortranसंकलित करने के लिए sudo apt install gfortran
स्कैपी के

जवाबों:


145

MAINT के अनुसार : dtype / ufunc आकार में परिवर्तन के बारे में साइलेंस साइथन चेतावनी। - सुन्न / सुन्न :

ये चेतावनी तब दिखाई देती है जब आप किसी पुराने पुराने खसरे के खिलाफ संकलित (या एक अन्य पैकेज) आयात करते हैं जो स्थापित होता है।

और चेक साइथन द्वारा डाले गए हैं (इसलिए इसके साथ संकलित किसी भी मॉड्यूल में मौजूद हैं)।

लंबी कहानी संक्षेप में, इन चेतावनियों को विशेष स्थिति में सौम्य होना चाहिएnumpy , और ये संदेश तब से फ़िल्टर किए जाते हैंnumpy 1.8 ( जब यह शाखा चली गई थी)। के scikit-learn 0.18.1खिलाफ संकलित किया गया हैnumpy 1.6.1

इन चेतावनियों को स्वयं फ़िल्टर करने के लिए , आप पैच के समान ही कर सकते हैं :

import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
warnings.filterwarnings("ignore", message="numpy.ufunc size changed")

बेशक, आप अपनेnumpypip install --no-binary :all: ¹ के साथ अपने स्थानीय के खिलाफ स्रोत से सभी प्रभावित मॉड्यूल को फिर से जोड़ सकते हैं यदि आपके पास उसके लिए गेंद के उपकरण हैं।


लंबी कहानी: पैच के प्रस्तावक का दावा है कि विशेष रूप से कोई जोखिम नहीं होना चाहिए numpy, और 3-पार्टी पैकेज जानबूझकर पुराने संस्करणों के खिलाफ बनाए गए हैं:

[वर्तमान सुन्न के खिलाफ सब कुछ पुनर्निर्माण] एक संभव समाधान नहीं है, और निश्चित रूप से आवश्यक नहीं होना चाहिए। Scipy (कई अन्य पैकेज के रूप में) कई संस्करणों के साथ संगत है। इसलिए जब हम स्केपी बायनेरिज़ वितरित करते हैं, तो हम उन्हें सबसे कम समर्थित संख्यात्मक संस्करण (अब के रूप में 1.5.1) के खिलाफ बनाते हैं और वे 1.6.x, 1.7.x और संख्यात्मक मास्टर के साथ भी काम करते हैं।

असली सही केवल साइथन के लिए चेतावनी जारी करने के लिए होगा जब dtypes / ufuncs का आकार एक तरह से परिवर्तन होता है जो एबीआई को तोड़ता है, और अन्यथा चुप हो।

नतीजतन, साइथन के देवता हाथ से द्विआधारी संगतता बनाए रखने के साथ सुपी टीम पर भरोसा करने के लिए सहमत हुए , इसलिए हम शायद उम्मीद कर सकते हैं कि एबीआई परिवर्तनों को तोड़ने वाले संस्करणों का उपयोग करने से विशेष रूप से तैयार किए गए अपवाद या कुछ अन्य स्पष्ट शो-स्टॉपर मिलेंगे।


¹ पहले से उपलब्ध --no-use-wheelविकल्प निकाल दिया गया के बाद सेpip 10.0.0


1
डॉक्टर लिंक: --no-binary, आवश्यकताओं फ़ाइलों के लिए प्रति-आवश्यकता ओवरराइड । इसके अलावा, मैं यहाँ आया था pandas, इसलिए यहाँ प्रासंगिक pandasGitHub मुद्दा है
चचेरे भाई

35

यह नए संख्यात्मक संस्करण का मुद्दा है (1.15.0)

आप स्तब्ध हो सकते हैं और यह समस्या ठीक हो जाएगी:

sudo pip uninstall numpy
sudo pip install numpy==1.14.5

अंत में सुन्न 1.15.1 संस्करण जारी किया जाता है, ताकि चेतावनी के मुद्दे तय हो जाएं।

sudo pip को numpy == 1.15.1 पर संस्थापित करें

यह काम कर रहा है ..


6
गलती से कोड जो चेतावनी देता है, उसे 1.14.5 और 1.15.0 के बीच हटा दिया गया था। ठीक 1.15.1 बग सुधार रिलीज, जो अगस्त 2018 के अंत तक बाहर किया जाना चाहिए का हिस्सा है
mattip

3
धन्यवाद @ मट्टिप pip install numpy==1.15.1मुझे 1.15.0 से 1.15.1 तक मिला और चेतावनी संदेश चले गए।
कीथजॉली

1.15.0 अंकों के साथ, मुझे उपरोक्त रिपोर्ट चेतावनी संदेश मिला जब PyTables संस्करण 3.4.4 और H5Py संस्करण 2.8.0 आयात किया गया। 1.15.1 Numpy संस्करण स्थापित करने के बाद चेतावनी गायब हो गई।
सूर्य भालू

8

यदि आप एनाकोंडा पर्यावरण उपयोग में हैं:

conda update --all

2
या मेरे लिए काम करने वाले सिर्फ सुन्न को अपडेट करें:conda update numpy
डैन किंग

8

मैंने उपर्युक्त तरीकों की कोशिश की है, लेकिन कुछ भी काम नहीं किया। लेकिन जब मैं apt स्थापित के माध्यम से पुस्तकालयों को स्थापित करने के बाद मुद्दा चला गया था,

पायथन 3 के लिए,

pip3 uninstall -y numpy scipy pandas scikit-learn
sudo apt update
sudo apt install python3-numpy python3-scipy python3-pandas python3-sklearn 

पायथन 2 के लिए,

pip uninstall -y numpy scipy pandas scikit-learn
sudo apt update
sudo apt install python-numpy python-scipy python-pandas python-sklearn 

उम्मीद है की वो मदद करदे।


11
आपने Py2 संस्करणों को अनइंस्टॉल किया और Py3 स्थापित किए।
पर्क्यूस

लगता है python3 संस्करणों को स्थापित करने से मेरी समस्या भी हल हो गई।
मेनुका ईशान

यदि आप numpyPyPI के बजाय आधिकारिक डिस्ट्रो के रिपॉजिटरी से बाइनरी पैकेज स्थापित करते हैं, तो निश्चित रूप से वे सभी उसी के खिलाफ संकलित हैं numpy। नकारात्मक पक्ष यह है कि आपको नवीनतम संस्करण नहीं मिल रहे हैं।
ivan_pozdeev

7

बस अपने संख्यात्मक मॉड्यूल को अपग्रेड करें, अभी यह 1.15.4 है। विंडोज के लिए

pip install numpy --upgrade

1

यह त्रुटि तब होती है क्योंकि स्थापित पैकेज फिर से सुन्न के विभिन्न संस्करण का निर्माण करते थे।
हमें स्थानीय लोगों के खिलाफ डराने और डराने-सीखने की जरूरत है numpy

नए pip(मेरे मामले में pip 18.0) इस काम के लिए:

pip uninstall -y scipy scikit-learn
pip install --no-binary scipy,scikit-learn -I scipy scikit-learn

--no-binaryउन पैकेजों के नामों की सूची लेता है जिनके लिए आप बायनेरिज़ को अनदेखा करना चाहते हैं। इस मामले में हम उत्तीर्ण हुए हैं, --no-binary scipy,scikit-learnजो द्वैध, बिखरा-सीखा संकुल के लिए द्वैध को अनदेखा करेगा। मेरी मदद नहीं की


0

मेटा-जानकारी: स्केलेर को स्थापित करने का अनुशंसित तरीका

यदि आपके पास पहले से ही सुन्न और स्कैपी की एक कामकाजी स्थापना है, तो स्किकिट-सीखने को स्थापित करने का सबसे आसान तरीका उपयोग कर रहा है pip

pip install -U scikit-learn 

या conda:

conda install scikit-learn

[... पाइप का उपयोग करके स्रोत से संकलन न करें]

आप पहले से ही numpy और scipy के साथ एक अजगर स्थापना की जरूरत नहीं है, तो हम अपने पैकेज प्रबंधक के माध्यम से या के माध्यम से या तो स्थापित करने के लिए सलाह देते हैं एक अजगर बंडल । ये सुन्न, डरावना, डरावना-सीखें, मैटलपोटलिब और कई अन्य सहायक वैज्ञानिक और डेटा प्रोसेसिंग लाइब्रेरी के साथ आते हैं।


0

ध्यान दें कि साइथन 0.29 के रूप में एक नया चेक_साइज विकल्प है जो स्रोत पर चेतावनी को समाप्त कर देता है, इसलिए किसी भी कार्य-संस्करण की आवश्यकता नहीं होनी चाहिए क्योंकि यह संस्करण विभिन्न पैकेजों के लिए लंबित है


-3

मेरा वातावरण पायथन 2.7.15 है

मैं कोशिश करूँगा

pip uninstall
pip install --no-use-wheel

लेकिन यह काम नहीं करता है। यह त्रुटि दिखाता है:

ऐसा कोई विकल्प नहीं: --उपयोग-पहिया

फिर मैं कोशिश करता हूं:

pip uninstall
pip install --user --install-option="--prefix=" -U scikit-learn

और यह काम करता है: बेकार की चेतावनी नहीं दिखाते हैं।


3
विकल्प --no-use-wheelको हटा दिया गया है। --no-binary :all:इसके बजाय उपयोग करें ।
jmlarson

-5

जब आयात scipy, त्रुटि की जानकारी से पता चलता है: RuntimeWarning: builtin .type आकार बदल गया है, द्विआधारी असंगति का संकेत हो सकता। उम्मीद जद, जद मिली

मैंने 2.7.2 से 2.7.13 तक अजगर संस्करण को अपडेट करके इस समस्या को हल किया

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.