matlab - 特征提取步骤花费的时间太长

标签 matlab amazon-web-services machine-learning signal-processing octave

我在 Octave 中整理了一个机器学习例程,如下所示:

  1. 从声音文件中提取特征
  2. 对特征进行缩放和标准化
  3. SVM 分类器已训练完毕
  4. 已执行分类

我遇到的问题是整个数据库的步骤 2,3 和 4 需要几秒钟的时间才能完成。然而,第 1 步每个文件大约需要 1 秒,这太长了。

花费这么长时间的原因在很大程度上是因为我使用 leasqr 对每个文件执行多个指数拟合。

由于我每个类和 3 个或更多类有大约 1500 个声音文件,因此它开始增加。我想扩展到 15,000 个文件,以当前的特征提取速度来说这是不可行的。

我必须一遍又一遍地处理特征提取步骤的原因是因为我一直在使用它来调整我的分类器性能。例如。通过更改执行指数拟合的范围。

我的问题如下。我没有在外部运行繁重流程的经验,但这是否是一个可行的解决方案?如果是这样,对于这种情况,好的/标准做法是什么?如果没有,什么是好的做法?

最佳答案

由于您的流程是高度独立的(从一个文件中提取特征不以任何方式依赖于其他文件的提取结果),处理此问题最合乎逻辑的方法是并行化。您可以同时在许多线程/核心/处理器/计算机/集群上运行此过程,使整个过程如您所愿,假设您有足够的计算能力。如果您是一名研究人员,您很可能可以访问大学/研究机构/公司的一些计算集群。否则,您始终可以购买此类资源的访问权限,例如在 Amazon EC2 上(但是我确信您可以找到更便宜、更好的集群)。

但似乎更好(从价格和结果的角度来看)是将 Octave 抛在后面,因为它非常慢并使用像c++这样的高效语言。如果这还不够(而且我很确定,它至少会加快行数量级),那么请考虑并行化。

总的来说,Matlab/Octave 是分析工具,应该用于研究,而不是用于实际计算。一旦考虑到效率,就该进行“实际编程”了。

关于matlab - 特征提取步骤花费的时间太长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18567633/

相关文章:

amazon-web-services - 在用户数据运行的命令期间未为 ec2-user 设置 $HOME

amazon-web-services - 如果 InstanceSecurityGroup 的 VPCID 为 String,如何导入堆栈

r - 错误 `contrasts' 错误

image - 给图像一个黑色背景?

linux - 在 matlab 脚本中运行 linux 命令 "cat"

git - 我可以将 CodeStar 的部署基础设施与现有的 CodeCommit 存储库一起使用吗?

scala - 为什么在某些阶段之后,所有任务都分配给spark中的一台机器(执行器)?

matlab - 有没有办法自动禁止 Matlab 在命令窗口中打印大矩阵?

arrays - 如何比较数组和 NaN?

python - 如何在 Python 中向量化数组操作