2016-04-03 14 views
0

が私のコードです:トレーニング中にパイ脳の総誤差平均は何ですか?ここで

from pybrain.structure import * 
from pybrain.datasets import SupervisedDataSet 
from pybrain.supervised.trainers import BackpropTrainer 
fnn = FeedForwardNetwork() 
inLayer = LinearLayer(2, name='inLayer') 
hiddenLayer = SigmoidLayer(7, name='hiddenLayer0') 
outLayer = LinearLayer(1, name='outLayer') 
fnn.addInputModule(inLayer) 
fnn.addModule(hiddenLayer) 
fnn.addOutputModule(outLayer) 
in_to_hidden = FullConnection(inLayer, hiddenLayer) 
hidden_to_out = FullConnection(hiddenLayer, outLayer) 
fnn.addConnection(in_to_hidden) 
fnn.addConnection(hidden_to_out) 
fnn.sortModules() 
from pybrain.supervised.trainers import BackpropTrainer 
DS = SupervisedDataSet(2,1) 
for i in range(100): 
    for j in range(100): 
     DS.addSample([i,j], [i*j]) 
X = DS['input'] 
Y = DS['target'] 
dataTrain, dataTest = DS.splitWithProportion(0.8) 
xTrain, yTrain = dataTrain['input'], dataTrain['target'] 
xTest, yTest = dataTest['input'], dataTest['target'] 
trainer = BackpropTrainer(fnn, dataTrain, verbose = True, learningrate=0.01) 
trainer.trainUntilConvergence(maxEpochs=1000) 

私はこのコードを実行すると、すべてのepoch.Iがit.Whatを理解カントのために、私はtotal errorを得たtotal errorが意味するのでしょうか?そして少し大きめのように見えます。あなたのプログラムロジックは欠陥がある

Total error: 2421098.90561 
Total error: 2421079.7975 
Total error: 2419968.22232 
Total error: 2423552.04539 
Total error: 2423015.61675 

答えて

1

:ここ

は、それらのいくつかtotal errorです。あなたは、ニューラルネットワークを使ったトレーニングの概念全体と、何時代のものかを誤解しているかもしれません。この次の行は、あなたの問題は、次のとおりです。

for i in range(100): 
    trainer.trainEpochs(1) 

あなたは各反復であなたは1つのエポックを使用してネットワークを訓練され、その後、あなたが停止され、再びゼロから始める、代わりに、100のエポックネットワークを訓練されていません。

forループは必要ありません。 forループを削除し、ちょうどあなたが100のエポックたいことを指定:あなたは、あなたの学習過程における一回の反復としてエポックと考えることができ

trainer.trainEpochs(100) 

を。

表示されている「合計エラー」は、ネットワークの設定方法に問題があることを示しています。使用しているデータと3層のネットワークでは、エラーは何らかの小さな値に収束するまで継続的に減少するはずです。

「合計エラー」とはなんですか?ネットワークを訓練するたびに、ネットワークは入力をあなたが提供する出力に変換する方法を学習しています。 「総合誤差」は、平均再構成誤差であり、意図された出力から実際に得られた出力を差し引いたもの(2乗)およびすべての入力に対するこれらの平均である。

+0

はい、あなたは私を修正します!しかし、それはポイントではありません。あなたはそれがClassificationDataSetで私のデータセットのポイントだと思いますか?で、その範囲での私のために右 –

+0

マイデータセット '(20):範囲内のjに対して \t(20): \t \t alldata.addSample([I、J]、[i *がJ])私がしようとした' –

+1

あなたの質問に記載されているように答えてください。あなたの質問が異なる場合は、実際の質問で元の質問を編集できますか? – UndeadKernel

関連する問題