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