python - 动态时间扭曲中避免堆栈溢出的技术

标签 python optimization nlp speech-recognition dynamic-programming

我编写了一个动态时间扭曲单词识别系统,发现在没有达到最大递归深度的情况下我可以处理的最大音频文件是 1 秒样本。解决这个问题的常用技术有哪些?

这是我引用的代码。

https://gist.github.com/anonymous/3f06cc0eec198bdf0c03

最佳答案

有一个How safe is recursion in Python?这解释了为什么在 Python 中递归是一个坏主意。在其他语言中,这更容易。

幸运的是,您通常可以将递归转换为循环,如 programmers.stackexchange 中所述。 .

您可以在 Wikipedia 上找到无递归 DTW 示例:

int DTWDistance(s: array [1..n], t: array [1..m]) {
    DTW := array [0..n, 0..m]

    for i := 1 to n
        DTW[i, 0] := infinity
    for i := 1 to m
        DTW[0, i] := infinity
    DTW[0, 0] := 0

    for i := 1 to n
        for j := 1 to m
            cost:= d(s[i], t[j])
            DTW[i, j] := cost + minimum(DTW[i-1, j  ],    // insertion
                                        DTW[i  , j-1],    // deletion
                                        DTW[i-1, j-1])    // match

    return DTW[n, m]
}

关于python - 动态时间扭曲中避免堆栈溢出的技术,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27311579/

相关文章:

python - pip 安装失败,出现 FileNotFoundError : setup. py

SQL:最逾期的数字对?

algorithm - 撇号转换为正确的文本?

r - 加快 Julia 写得不好的 R 示例的速度

java - 使用gate处理文档时出现内存不足异常

python - Python- Pyramid 和matplotlib-SVG不能超过一个 View 输出吗?

python django返回不同的变量

python - Map对象转换为列表后清空自身

actionscript-3 - 将类声明为 final 时,每个方法是否也自动声明为 final?

algorithm - 查找数字是否为完美正方形的优化方法