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 です。

各隠しノードでシグモイド関数を使用していますが、これは 1/(1+exp(-a)) であると理解しています。ここで、a=各入力変数の加重値の合計です。

私はこれで数時間遊んでいて、困惑しています。何をしても適合値を再計算できません。何か案は?linout パラメータは計算をまったく変更しますか?

4

1 に答える 1

1

シグモイド関数は特定の関数ではありません。関数のクラスです。このクラスのインスタンスは、ロジスティック関数 1/(1+exp(-a))双曲線タンジェントなどです。

設定時に、出力層の活性化関数としてlinout=TRUE単位関数 ( ) を選択しますf(a) = a。つまり、実際には出力層に活性化関数がありません。

于 2012-07-22T16:36:40.957 に答える