在Coursera的斯坦福大学的Andrew Ng的机器学习的介绍性演讲中,他给出了以下一行Octave解决鸡尾酒会问题的scheme,假设audio源由两个空间分离的麦克风logging: [W,s,v]=svd((repmat(sum(x.*x,1),size(x,1),1).*x)*x'); 在幻灯片的底部是“来源:山姆·罗威斯,亚力·魏斯,埃罗·西蒙切利”,在前面的幻灯片的底部是“audio剪辑礼貌的李元媛李”。 吴教授说: “所以你可能会这样看待无监督的学习,并问:'实现这个有多复杂? 这似乎是为了构build这个应用程序,似乎要做这个audio处理,你会写很多代码,或者链接到一堆处理audio的C ++或Java库。看起来好像是一个真正的复杂的程序来做这个audio:分离出audio等等,结果发现你刚刚听到的algorithm,只需要一行代码就可以完成……这里显示的是研究人员很长一段时间想出这样的代码,所以我并不是说这是一个简单的问题,但事实certificate,当你使用正确的编程环境时,许多学习algorithm将会是一个非常短的程序。 在video讲座中播放的分离的audio结果并不完美,但在我看来,令人惊叹。 有没有人有任何关于如何一行代码performance如此出色的见解? 特别是,有没有人知道有关Te-Won Lee,Sam Roweis,Yair Weiss和Eero Simoncelli关于这一行代码的工作的参考资料? UPDATE 为了演示该algorithm对麦克风分离距离的敏感性,下面的模拟(在八度中)将音调从两个空间分离的音调发生器中分离出来。 % define model f1 = 1100; % frequency of tone generator 1; unit: Hz f2 = 2900; % frequency of tone generator 2; unit: Hz Ts = 1/(40*max(f1,f2)); % sampling period; unit: s dMic = 1; % distance […]
我试图find给定matrix的零空间(Ax = 0的解空间)。 我find了两个例子,但我似乎无法得到任何工作。 而且,我不明白他们在做什么,所以我不能debugging。 我希望有人能够通过这个来引导我。 文档页面( numpy.linalg.svd和numpy.compress )对我来说是不透明的。 我学会了通过创buildmatrixC = [A|0]来做到这一点,find缩小的行梯forms并逐行求解variables。 我似乎无法仿效这些例子中的做法。 感谢您的帮助! 这里是我的示例matrix,它与维基百科示例相同: A = matrix([ [2,3,5], [-4,2,3] ]) 方法( 在这里和这里 find ): import scipy from scipy import linalg, matrixr def null(A, eps=1e-15): u, s, vh = scipy.linalg.svd(A) null_mask = (s <= eps) null_space = scipy.compress(null_mask, vh, axis=0) return scipy.transpose(null_space) 当我尝试它时,我得到一个空matrix: Python 2.6.6 […]