我写了一个动态时间扭曲的单词识别系统,发现我能处理的最大的音频文件没有达到最大递归深度是1秒样本。解决这个问题的常用技巧是什么?
以下是我引用的代码。
答案 0 :(得分:0)
有一个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]
}