2012-07-21 65 views
2

我在R中的下面的代碼使用所述NNET包來獲得權重值和預測值的神經網絡的值:重新計算預測

test <- read.csv('ScaledData.csv',header=TRUE,sep = ",") 

ANNtrain <- nnet(Price ~ Sqft + Bedrooms + Bathrooms,test[1:650,],size=2, maxit=5000, linout=TRUE) 

ANNtrain$wts 

ANNtrain$fitted.values 

所以我結束了這些權重:

b->h1 2.3681687 
i1->h1 -0.3898256 
i2->h1 1.3565967 
i3->h1 -1.8423163 
b->h2 1.4826518 
i1->h2 0.6584391 
i2->h2 0.8964167 
i3->h2 -1.3290192 
b->o 1.0835755 
h1->o -4.977095 
h2->o 4.2466241 

我試圖重新計算擬合值,例如第一筆交易的擬合值是.025014924。

我在每個隱藏節點上使用sigmoid函數,我知道它是1 /(1 + exp(-a)),其中a =每個輸入變量的加權值之和。

我一直在玩這個幾個小時,現在我很難過。無論我做什麼,我都無法重新計算擬合的值。有任何想法嗎? linout參數是否改變了計算?

回答

1

A sigmoid function不是一個特定的功能。它是一類功能。這個類的實例是e。 G。 logistic function1/(1+exp(-a))hyperbolic tangent

當您設置linout=TRUE時,您可以選擇身份函數(f(a) = a)作爲輸出圖層的激活函數,即i。即你實際上在輸出層沒有激活功能。

+0

好的,我明白了。而且我已經在我的OP中更正了我的公式,以反映邏輯函數,因爲我輸錯了它。 – ChrisArmstrong 2012-07-23 00:53:42

+0

順便說一句。當你設置linout = TRUE時,輸出層的激活函數將是身份,是嗎? – alfa 2012-07-23 05:58:33

+0

這就是我想知道的;我沒有數學背景,所以我不確定你的身份是什麼意思,但看起來好像計算線性輸出會有所不同。 – ChrisArmstrong 2012-07-23 12:48:37