0

我有一些問題,反向傳播學習使用AForge.NET - 神經學習 - 反向傳播。我實際上嘗試像樣本一樣實現神經網絡(Aproximation)。我的問題是這樣的: 1. input vector {1,2,3,...,19,20} 2.輸出矢量{1,2,3,...,19,20}(它是線性函數) 3. ActivationNetwork network = new ActivationNetwork(new BipolarSigmoidFunction(2),1,20,1); 4.然後約10k倍 - teacher.RunEpoch(輸入,輸出);AForge.NET - 向後傳播學習總是返回值[-1; 1]

學習完成後,我的network.Compute()返回[-1; 1]中的值爲什麼?

在示例中有像向量(x - > [ - 1; 1]和y - > [-0.85; 0.85])的值歸一化的東西,當我這樣做時,一切都很好......但它只是樣本我想了解神經網絡如何工作。我目前要實現的問題比較複雜(超過40個輸入神經元)

任何人都可以幫助我嗎?

回答

2

我還沒有和AForge一起工作,但BipolarSigmoidFunction最有可能是tanh,即輸出在[-1,1]之內。這通常用於分類或有時用於有界迴歸。在您的情況下,您可以縮放數據或使用線性激活功能(例如標識,g(a) = a)。

+0

謝謝,我看到我必須調整我的輸入和輸出或使用線性函數,但是足夠擴展到更復雜的問題,我有超過40個輸入神經元? – DMan 2013-05-12 13:40:17

+1

輸入數量無關緊要。唯一可能發生的情況是:當您的輸入變得非常大(這更可能是輸入數量較高時),S形激活函數(例如邏輯函數tanh)「飽和」,即梯度幾乎變爲0.因此,學習將會非常緩慢甚至不可能。這就是爲什麼通常建議將輸入縮放爲[-1,1]並用非常小的隨機數初始化神經網絡的權重的原因。 – alfa 2013-05-12 17:33:05