"为什么我的curve_fit达到maxfev = 10000?"

2024-05-10 01:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图做适合,但我每个maxfev即使增加到10000!。我想我做错了什么

我将通过4个相同大小(30X240X240)的图像堆栈循环,并在4个不同的图像上获得相同体素的值。因此,作为参考,我的循环将使用n=30,d=240


v1, v2, v3, v4 = 0.000, 0.000, 0.000, 0.000

xdata = np.array([50,300,600,1000])

D_map = np.zeros((n,d,d))
K_map = np.zeros((n,d,d))

def kurtosis(x, D, K):
    return (-x * D) + (1/6 * (x **2)* (D **2) * K)

for i in range(n):
    for r in range(d):
        for c in range(d):
            v1 = b50_data[i,r,c]
            if v1 < 28:
                D_map[i,r,c] = 0
                K_map[i,r,c] = 0
            else:
                v2 = b300_data[i,r,c]
                v3 = b600_data[i,r,c]
                v4 = b1000_data[i,r,c]
                ydata = np.array([v1,v2, v3, v4])
                ydata = np.log(ydata/v1)

                popt, pcov = curve_fit(kurtosis, xdata, ydata, maxfev= 10000)
                D_map[i,r,c] = popt[0] * 1000
                K_map[i,r,c] = popt[0]


Tags: in图像mapfordatanprangev3
1条回答
网友
1楼 · 发布于 2024-05-10 01:26:43

好的,我已经找到了解决办法

我用了 try: except:以通过任何需要很长时间才能返回错误的操作

我现在的代码是

try:
  popt, pcov = curve_fit(kurtosis, xdata, ydata, maxfev= 5000)
except:
  popt = [0,0]

D_map[i,r,c] = popt[0] * 1000
K_map[i,r,c] = popt[0]

相关问题 更多 >