使用Keras进行音频分类:检测人声的存在

我想用Keras创建一个音频分类系统,简单地判断给定的样本中是否包含人声。就这些。这将是我第一次尝试机器学习。

这个音频预处理器已经存在。它声称尚未完成,但已经被fork了几次:

https://github.com/drscotthawley/audio-classifier-keras-cnn

我不明白这个怎么运作,但我准备尝试一下:

https://github.com/keunwoochoi/kapre

假设我让其中一个运作起来了,接下来的过程会不会和图像分类类似?基本上,我从未完全理解什么时候使用Softmax,什么时候使用ReLu。一旦我将数据映射为张量,这在处理声音时会不会和处理图像时类似?


回答:

声音可以被视为一维图像,并通过一维卷积进行处理。通常,扩张卷积可能会做得很好,参见Wave Nets

声音也可以被视为序列,并通过RNN层进行处理(但对于大量数据来说,RNN可能过于庞大)

对于你的情况,你只需要一个输出,在最后使用'sigmoid'激活函数和'binary_crossentropy'损失函数。

  • 结果 = 0 -> 无声音
  • 结果 = 1 -> 有声音

什么时候使用’softmax’?

Softmax函数适用于多类问题(不适用于你的情况),你希望结果只有一个类。Softmax函数的所有结果之和为1。它被设计为每个类的概率。

它主要用于最终层,因为你只得到最终结果的类别。

它适用于只有一个类是正确的情况。在这种情况下,它与损失函数categorical_crossentropy配合得很好。

模型中间的Relu和其他激活函数

这些没有严格的规则。有很多可能性。我经常在图像卷积模型中看到relu。

需要了解的重要事情是它们的“范围”。它们的输出有什么限制?

  • Sigmoid:从0到1 —— 在模型的末端,这将是你的存在/不存在分类的最佳选择。也适用于希望多个可能类别一起出现的模型。
  • Tanh:从-1到1
  • Relu:从0到无穷大(它简单地切断负值)
  • Softmax:从0到1,但确保所有值的总和为1。适用于希望在多个类别中只选择一个类别的模型的末端。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注