nnet
Rのパッケージの関数を使用してnnet
、フィードフォワード多層ニューラルネットワークを開発しています。各トレーニングの反復後の出力に関連する予測誤差のより詳細な出力を取得することに興味があります。trace引数をTRUE(デフォルト)に設定すると、10回のトレーニング反復の各セットの後に予測エラーが発生します。ただし、10個のセットごとではなく、反復ごとに予測エラーを取得したいと思います。
ヘルプファイルのサンプルコードの変更された部分を使用すると、初期予測エラー、10、20などの反復後の予測エラー、および最大反復回数に達した後の最終予測エラーが表示されます。
data(iris)
ir <- rbind(iris3[,,1],iris3[,,2],iris3[,,3])
targets <- class.ind( c(rep("s", 50), rep("c", 50), rep("v", 50)) )
samp <- c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
ir1 <- nnet(ir[samp,], targets[samp,], size = 2, rang = 0.1,
decay = 5e-4, maxit = 50)
出力:
# weights: 19
initial value 55.824151
iter 10 value 49.096486
iter 20 value 37.871175
iter 30 value 25.536477
iter 40 value 1.498461
iter 50 value 0.954119
final value 0.954119
stopped after 50 iterations
回避策を使用すると、トレーニングを繰り返すたびにエラーが発生する可能性があります。
errors<-NULL
for(i in 1:50){
set.seed(50)
mod<-nnet(ir[samp,], targets[samp,], size = 2, rang = 0.1,
decay = 5e-4, maxit = i)
errors<-rbind(errors,c(i,mod$value))
}
明らかな理由から、回避策は非常に非効率的であり、10回のトレーニング反復の各セットの後ではなく、各トレーニング反復後にエラーを返すようにソースコードを微調整することが可能かどうか疑問に思っています。nnet.defaultのコードを微調整しようとしましたが、そのような運はありませんでした。
前もって感謝します。