【问题标题】:Librosa and Numba in PythonPython 中的 Librosa 和 Numba
【发布时间】:2021-03-10 09:00:20
【问题描述】:

我正在体验 numba 以加快我的代码速度,我在此代码中遇到错误

@njit
def fee(x):
    chroma_stft = librosa.feature.chroma_stft(y=data, sr=sampling_rate).ravel()
    return(chroma_stft)

TypingError: Failed in nopython mode pipeline (step: nopython frontend) Unknown attribute 'chroma_stft' of type Module(<module 'librosa.feature' from '/usr/local/lib/python3.7/dist-packages/librosa/feature/__init__.py'>)

如何解决这个问题,有没有办法在 numba 中使用 scipy.stats 函数?

谢谢

【问题讨论】:

    标签: python numpy numba librosa


    【解决方案1】:
    @njit
    

    是简写

    @jit(nopython=True)
    

    不允许导入 Python 代码。改成

    @jit
    

    它应该可以工作。

    但不用说you will not gain any performance improvement

    【讨论】:

    • 先生,有没有其他方法可以提高代码的速度,我在google colab中运行
    • 您是否为每个帧或每个音频文件调用chroma_stft
    • 是的,先生,我为所有音频文件调用 chroma_stft
    • 每个文件一次?然后我看不到任何微不足道的性能改进技巧。这也超出了原问题的范围,抱歉。
    【解决方案2】:

    该错误意味着 Numba 无法在 nopython (@jit(nopython=True)) 模式下 JIT 函数(@njit 是其别名)。

    您需要使用常规的@jit,但加速可能不会那么剧烈。

    scipy.stats 最有可能也是这样。

    【讨论】:

    • 我用@jit试过了,速度和CPU一样
    • 怎么做才能提高速度,我有几千条数据需要计算chroma_stft,大佬,有没有其他办法……
    • 数据是否相互依赖?如果没有,您可以使用multiprocessing 来(尝试)使用您机器上的所有 CPU。除此之外,(a)获得更快/更大的机器(b)接受这将需要一些时间(c)用更快/更低级别的语言重写你的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-13
    • 2023-03-29
    • 1970-01-01
    • 2021-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多