use*_*627 4 python arrays numpy numba numba-pro
我正在使用 numba 来加速我的代码,该代码在没有 numba 的情况下运行良好。但是在使用@jit 后,它会因以下错误而崩溃:
Traceback (most recent call last):
File "C:\work_asaaki\code\gbc_classifier_train_7.py", line 54, in <module>
gentlebooster.train(X_train, y_train, boosting_rounds)
File "C:\work_asaaki\code\gentleboost_c_class_jit_v7_nolimit.py", line 298, in train
self.g_per_round, self.g = train_function(X, y, H)
File "C:\Anaconda\lib\site-packages\numba\dispatcher.py", line 152, in _compile_for_args
return self.jit(sig)
File "C:\Anaconda\lib\site-packages\numba\dispatcher.py", line 143, in jit
return self.compile(sig, **kws)
File "C:\Anaconda\lib\site-packages\numba\dispatcher.py", line 250, in compile
locals=self.locals)
File "C:\Anaconda\lib\site-packages\numba\compiler.py", line 183, in compile_bytecode
flags.no_compile)
File "C:\Anaconda\lib\site-packages\numba\compiler.py", line 323, in native_lowering_stage
lower.lower()
File "C:\Anaconda\lib\site-packages\numba\lowering.py", line 219, in lower
self.lower_block(block)
File "C:\Anaconda\lib\site-packages\numba\lowering.py", line 254, in lower_block
raise LoweringError(msg, inst.loc)
numba.lowering.LoweringError: Internal error:
NotImplementedError: ('cast', <llvm.core.Instruction object at 0x000000001801D320>, slice3_type, int64)
File "gentleboost_c_class_jit_v7_nolimit.py", line 103
Run Code Online (Sandbox Code Playgroud)
第 103 行在下面,在一个循环中:
weights = np.empty([n,m])
for curr_n in range(n):
weights[curr_n,:] = 1.0/(n) # this is line 103
Run Code Online (Sandbox Code Playgroud)
wheren是在我的代码中上面某处已经定义的常量。
我怎样才能消除错误?正在发生什么“降低”?我在 64 位机器上使用 Anaconda 2.0.1 和 Numba 0.13.x 和 Numpy 1.8.x。
基于此: https://gist.github.com/cc7768/bc5b8b7b9052708f0c0a,
我想出了怎么做才能避免这个问题。我没有使用冒号:来引用任何行/列,而是将循环打开为两个循环,以明确引用数组每个维度中的索引:
weights = np.empty([n,m])
for curr_n in range(n):
for curr_m in range (m):
weights[curr_n,curr_m] = 1.0/(n)
Run Code Online (Sandbox Code Playgroud)
在此之后我的代码中还有其他实例使用冒号,但它们并没有进一步导致错误,不知道为什么。
| 归档时间: |
|
| 查看次数: |
2991 次 |
| 最近记录: |