簡體   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