রানটাইম সতর্কতা: numpy.dtype আকার পরিবর্তন হয়েছে, বাইনারি অসঙ্গতি নির্দেশ করতে পারে


148

সংরক্ষিত এসভিএম মডেলটি লোড করার চেষ্টা করার জন্য আমার এই ত্রুটি রয়েছে। আমি স্কেলারন, নম্পপি এবং সায়্পাই আনইনস্টল করার চেষ্টা করেছি, সর্বশেষ সংস্করণগুলি আবার একসাথে পুনরায় ইনস্টল করেছি (পাইপ ব্যবহার করে)। আমি এখনও এই ত্রুটি পাচ্ছি। কেন?

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আপনার সিস্টেমে যা কিছু আছে তার বিপরীতে উত্স থেকে মডিউলটি পুনরায় কম্পাইল করে।
ivan_pozdeev

17
পাইপের নতুন সংস্করণগুলিতে এই কমান্ডটির নতুন নামকরণ করা হয়েছে --no-binary
s_kirkiles

1
হাঁ, এই আমার জন্য কাজ: pip install --no-binary :all: pandas। এফডব্লিউআইডাব্লু আমি পাইথন সংস্করণের শীর্ষে একটি নতুন ভিই বিল্ডে Python 3.6.6 :: Anaconda, Inc.কেবল requestsএবং pandasপরিবেশে ইনস্টল থাকা অবস্থায় এই ত্রুটিটি পাচ্ছিলাম ।
সাফায়


gfortranস্কিপি সংকলনের জন্য আপনাকেও ইনস্টল করতে হবে :sudo apt install gfortran
ma3oun

উত্তর:


145

মাইন্ট অনুযায়ী : নীরবতা সাইথন 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")

অবশ্যই, আপনি শুধু আপনার স্থানীয় বিরুদ্ধে উৎস থেকে সমস্ত প্রভাবিত মডিউল কম্পাইল করতেnumpy সঙ্গে pip install --no-binary :all:¹ পরিবর্তে যদি আপনি বাজে কথা যে জন্য সরঞ্জাম।


দীর্ঘ গল্প: প্যাচের প্রবক্তার দাবি যে বিশেষত কোনও ঝুঁকি থাকা উচিত নয় numpyএবং তৃতীয় পক্ষের প্যাকেজগুলি পুরানো সংস্করণগুলির বিরুদ্ধে ইচ্ছাকৃতভাবে নির্মিত হয়েছিল:

[বর্তমান অলসতার বিপরীতে সমস্ত কিছু পুনর্নির্মাণ করা সম্ভবপর সমাধান নয়) এবং অবশ্যই এটি প্রয়োজনীয় হওয়া উচিত নয়। স্কিপি (অন্যান্য প্যাকেজগুলির মতো) নম্পির বিভিন্ন সংস্করণের সাথে সামঞ্জস্যপূর্ণ। সুতরাং যখন আমরা স্কিপি বাইনারিগুলি বিতরণ করি, তখন আমরা এগুলি সর্বনিম্ন সমর্থিত নিম্পী সংস্করণ (এখনকার 1.5.1.1) এর বিপরীতে তৈরি করি এবং তারা 1.6.x, 1.7.x এবং নম্পুটে মাস্টার সহও কাজ করে।

আসল সঠিকতা কেবল তখন সাইথনের পক্ষে সতর্কতা জারি করা ছিল যখন ডাইটিপস / ইউফুঙ্কস এর আকারটি এমনভাবে পরিবর্তিত হয় যা এবিআইকে ভেঙে দেয় এবং অন্যথায় চুপ করে থাকে।

ফলস্বরূপ, সাইথনের ডেভস হাত দিয়ে বাইনারি সামঞ্জস্য বজায় রাখার সাথে নম্পু দলকে বিশ্বাস করতে সম্মত হয়েছিল , তাই আমরা সম্ভবত আশা করতে পারি যে অ্যাবিআই পরিবর্তনগুলি ভঙ্গ করে সংস্করণগুলি ব্যবহার করে একটি বিশেষভাবে তৈরি করা ব্যতিক্রম বা অন্য কোনও স্পষ্ট শো-স্টপার পাওয়া যাবে।


Available আগের উপলভ্য --no-use-wheelবিকল্পটি তখন থেকে সরানো হয়েছেpip 10.0.0


1
ডক লিঙ্ক: --no-binary, প্রয়োজনীয়তা ফাইলের জন্য প্রতি প্রয়োজন ওভাররাইড । এছাড়াও, আমি এখানে এসেছি pandas, সুতরাং এখানে প্রাসঙ্গিক pandasগিটহাব ইস্যু
eacousineau

35

এটি নতুন অদ্ভুত সংস্করণের বিষয়টি (1.15.0)

আপনি নাম্পারকে ডাউনগ্রেড করতে পারেন এবং এই সমস্যাটি ঠিক হয়ে যাবে:

sudo pip uninstall numpy
sudo pip install numpy==1.14.5

অবশেষে নকল 1.15.1 সংস্করণ প্রকাশিত হয়েছে যাতে সতর্কতা সংক্রান্ত সমস্যাগুলি স্থির হয়।

sudo পিপ ইনস্টল নম্পি == 1.15.1

এটি কাজ করছে ..


6
ভুল করে সেই কোডটি যা শান্ত করে সেই সতর্কতাটি 1.14.5 এবং 1.15.0 এর মধ্যে সরিয়ে ফেলা হয়েছে। ফিক্স 1.15.1 ত্রুটির সমাধান সহ প্রকাশ, যা আগস্ট 2018 সালের শেষ নাগাদ বের হওয়া উচিত অংশ
mattip

3
ধন্যবাদ @ ম্যাটটিপ pip install numpy==1.15.11.15.0 থেকে 1.15.1 এ আমাকে পেয়েছে এবং সতর্কতা বার্তা চলে গেছে away
কিথপজললি

পাইপটিবল সংস্করণ 3.4.4 এবং H5Py সংস্করণ 2.8.0 আমদানি করার সময় ন্যালি 1.15.0 এর সাথে আমি উপরের প্রতিবেদনটির সতর্কতা পেয়েছি। সতর্কতাটি নম্পি সংস্করণ 1.15.1 ইনস্টল করার পরে অদৃশ্য হয়ে গেছে।
সান বিয়ার

8

আপনি যদি অ্যানাকোন্ডা পরিবেশে থাকেন তবে:

conda update --all

2
বা কেবল অদ্ভুত আপডেট করুন যা আমার পক্ষে কাজ করেছে:conda update numpy
ড্যান কিং

8

আমি উপরোক্ত উপায়গুলি চেষ্টা করেছি, কিন্তু কিছুই কার্যকর হয়নি। তবে অ্যাপটি ইনস্টলের মাধ্যমে আমি লাইব্রেরিগুলি ইনস্টল করার পরে সমস্যাটি চলে গেছে,

পাইথন 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
আপনি পাই 2 সংস্করণ আনইনস্টল করেছেন এবং পাই 3 টি ইনস্টল করেছেন।
পার্কাস

পাইথন 3 সংস্করণ ইনস্টল করা আমার সমস্যাটিকেও সমাধান করেছে।
মেনুকা hanশান

আপনি যদি numpyপিআইপিআইয়ের পরিবর্তে অফিশিয়াল ডিস্ট্রোর রিপোজিটরি থেকে বাইনারি প্যাকেজ ইনস্টল করেন তবে অবশ্যই সেগুলি সমস্ত একই সংকলিত 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

নোট করুন যে সাইথন ০.২৯ অনুসারে একটি নতুন চেক_সাইজ অপশন রয়েছে যা উত্সের সতর্কতাটি সরিয়ে দেয়, তাই সংস্করণটি বিভিন্ন প্যাকেজগুলিতে প্রবেশ করার পরে কোনও কাজের আশেপাশের প্রয়োজন হবে না once


-3

আমার পরিবেশ পাইথন ২. 2..১৫

আমি চেষ্টা করি

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:পরিবর্তে ব্যবহার করুন।
jmlaron

-5

যখন আমদানি scipy, ত্রুটি তথ্য শো: RuntimeWarning: builtin .type আকার পরিবর্তন বাইনারি অসঙ্গতি ইঙ্গিত হতে পারে। প্রত্যাশিত zd, zd পেয়েছি

আমি পাইথন সংস্করণটি ২.7.২ থেকে ২.7.১৩ এ আপডেট করে এই সমস্যার সমাধান করেছি

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.