जोड़ते समय पायथन/numpy में फ्लोट सटीक टूटना मुझे वास्तव में कम संख्या में numpy के साथ उपयोग की वजह से कुछ समस्याएं हैं। इस तथ्य के लिए संख्यात्मक एकीकरण के साथ मेरी निरंतर समस्याओं का पता लगाने में मुझे कई सप्ताह लग गए, जब मैं एक समारोह में फ्लोट जोड़ता हूं तो फ्लोट 64 परिशुद्धता गुम हो जाती है। एक योग के बजाय उत्पाद के साथ गणितीय रूप से समान गणना करना ठीक मूल्यों की ओर जाता है।संख्या
from matplotlib.pyplot import *
from numpy import vectorize, arange
import math
def func_product(x):
return math.exp(-x)/(1+math.exp(x))
def func_sum(x):
return math.exp(-x)-1/(1+math.exp(x))
#mathematically, both functions are the same
vecfunc_sum = vectorize(func_sum)
vecfunc_product = vectorize(func_product)
x = arange(0.,300.,1.)
y_sum = vecfunc_sum(x)
y_product = vecfunc_product(x)
plot(x,y_sum, 'k.-', label='sum')
plot(x,y_product,'r--',label='product')
yscale('symlog', linthreshy=1E-256)
legend(loc='lower right')
show()
आप देख सकते हैं, अभिव्यक्त किया मानों काफी कम शून्य चारों ओर बिखरे हुए हैं या बिल्कुल शून्य है, जबकि इस प्रकार हैं:
यहाँ एक कोड नमूना और परिणामों की एक साजिश है गुणात्मक मान ठीक हैं ...
कृपया, कोई मदद/समझा सकता है? आपका बहुत बहुत धन्यवाद!
तो 'np.float64' पर्याप्त नहीं है, वहाँ है' एनपी .float128'। क्या यह एक ही समस्या है? – eumiro
हाँ, float96 के लिए एक ही समस्या ... –
सटीक समस्या से बचने के लिए लॉग डोमेन में इन रकम क्यों नहीं करते? http://lingpipe-blog.com/2012/02/16/howprevent-overflow-underflow-logistic-regression/ – jeff7