Python 非类型化全局名称';pvc sim卡';:无法确定一种类型的<;类别';skfuzzy.control.controlsystem.ControlSystemSimulation'&燃气轮机;
获取以下代码的错误:Python 非类型化全局名称';pvc sim卡';:无法确定一种类型的<;类别';skfuzzy.control.controlsystem.ControlSystemSimulation'&燃气轮机;,python,numba,skfuzzy,Python,Numba,Skfuzzy,获取以下代码的错误: @vectorize(["float32(float32, float32, float32, float32)"], target='cuda') def fuzz_comp(A_row, B_col, X, Y): for i in range(A_row): for j in range(B_col): pvc_sim.input['ipv'] = float(X[i,j]) pvc_sim.co
@vectorize(["float32(float32, float32, float32, float32)"], target='cuda')
def fuzz_comp(A_row, B_col, X, Y):
for i in range(A_row):
for j in range(B_col):
pvc_sim.input['ipv'] = float(X[i,j])
pvc_sim.compute()
Y[i,j] = pvc_sim.output['opv']
return Y
错误:
TypingError: Failed in nopython mode pipeline (step: nopython frontend)
Untyped global name 'pvc_sim': cannot determine Numba type of <class 'skfuzzy.control.controlsystem.ControlSystemSimulation'>
File "<ipython-input-13-4fe6c3f24f69>", line 5:
def fuzz_comp(A_row, B_col, X, Y):
<source elided>
for j in range(B_col):
pvc_sim.input['ipv'] = float(X[i,j])
^
TypingError:在nopython模式管道中失败(步骤:nopython前端)
非类型化全局名称“pvc_sim”:无法确定
文件“”,第5行:
def模糊组件(A行、B列、X、Y):
对于范围内的j(B_col):
pvc模拟输入['ipv']=浮点数(X[i,j])
^
然而,通读了许多文章,却无法解决这个问题。然而,代码是用Python编写的;使用decorator时返回错误。我正在尝试在GPU中实现模糊计算 错误告诉您的是,numba不知道如何键入全局变量
pvc_sim
。它似乎是一个python类,因此numba无法自动将其转换为低级代码。您可以编写一个专门的,但否则,此代码将失败。此外,我还不清楚该实施是否会从cuda目标中受益。请记住,@vectorize
函数被编写为在标量上操作,然后numba正确处理数组输入,将函数应用于每个元素。多亏了。我能够开发以下用于输入和输出成员函数的代码
spec = [
('value', int64), # a simple scalar field
('array', float64[:]), # an array field
]
@jitclass(spec)
class io_mf(object):
def __init__(self, value, array):
self.value = value
self.array = array
@property
def triangular(self):
if (self.array[0] - self.array[1]) <= self.value and self.value < self.array[0]:
return 1. - (self.array[0] - self.value) / self.array[1]
if self.array[0] <= self.value and self.value <= (self.array[0] + self.array[2]):
return 1. - (self.value - self.array[0]) / self.array[2]
return 0.
@property
def trapezoidal(self):
if (self.array[0] - self.array[2]) <= self.value and self.value < self.array[0]:
return 1. - (self.array[0] - self.value) / self.array[2]
if self.array[0] <= self.value and self.value < self.array[1]:
return 1.
if self.array[1] <= self.value and self.value <= (self.array[1] + self.array[3]):
return 1. - (self.value - self.array[1]) / self.array[3]
return 0
spec=[
('value',int64),#一个简单的标量字段
('array',float64[:]),#一个数组字段
]
@JIT等级(规范)
类io_mf(对象):
定义初始化(自、值、数组):
自我价值=价值
self.array=array
@财产
def三角形(自身):
if(self.array[0]-self.array[1])