繁体   English   中英

在Matlab中实现用于元音识别的神经网络-输入层单元和结构?

[英]Implementing neural network for vowel recognition in matlab - input layer units and the structure?

我正在做一个有关元音识别的项目,我需要实现一个神经网络。 我是该领域的新手,所以我不确定如何正确地做。 我有800个单词的训练集,其中包含8种元音,而第一步是检查是否能够通过逻辑回归将它们分类为多个类:

-使用Matlab,我对每个样本执行了wavread并将结果向量存储在800 x 48117矩阵中,其中48117是最大的wav向量的大小。 即在这一步,我有800个示例和48117个“功能”,它们是每个声音文件的频率值。 当我运行逻辑回归时,它将对集合进行迭代,并将其分为8类,准确度约为99.8%。 然后,我还为接收的类生成了频谱图,以使每个类都可视化,并将它们与原始样本的频谱图进行比较。

-为了区分元音的共振频率,我们有3个共振峰-F1,F2,F3,一个在频谱图上可以看到。 (例如F1为500 Hz,我们可以看到频谱图在该图的该区域中具有最暗的颜色)。

-我正处于创建神经网络的步骤,而我对如何开始非常茫然。 我不确定要有多少输入层单位和隐藏层单位。 首先,我认为拥有48117个特征并具有一定数量的输入单位是不正确的,因此我必须以某种方式最小化特征的数量。 我认为正确的方法是将它们分成3个对应于3个共振峰的组。 这是主要问题- 基于我可以将长向量归纳为3个输入单位的依据?

-另一个似乎微不足道的问题是我应该拥有多少个隐藏单元。 我知道有多少没有特殊的规则,但是根据我的训练,有经验的神经网络人员会推荐多少?

我不确定我是否正确理解您的输入。 从我的收集中,wavread将.wav文件读取为“振幅矢量”。

首先,该网络具有4837个输入,k大小的隐藏层和8个类,使该网络具有4837 * k + 8 * k的权重,这可能非常庞大。 800个培训投入太多了。 通常都同意(但是,比科学更多的是艺术),隐藏层不应比输入层小很多。

我也不确定,如果逻辑回归表现良好,为什么还需要神经网络。

有这些疑问,我不确定我是否会回答您的问题,但是我会尽力的。 您需要减小输入大小。 它可以通过多种方式完成,一种是小波/傅立叶分析(将一个空间转换为低维)。 完成傅立叶分析后,您可以“存储”不同的频率。 更简单的方法是进行降维(matlab中的一项功能,如PCA)。 其原因是附近的值之间具有很高的相关性。 在图像分析中称为“增白”。

隐藏层的大小很难估计。 最好的方法是针对不同大小的隐藏层大小进行实验,然后选择最佳的隐藏层(过夜运行循环并查看结果)。

隐藏单元的数量取决于您想要哪种性能,如果性能欠佳且效果不佳,您可以拥有更多隐藏单元,但是性能良好且结果不准确。

因此,我的建议是尝试使用不同数量的隐藏单元,然后选择适合您的应用程序的单元。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM