5

Pybrain を使用して単純なニューラル ネットワークをトレーニングしようとしています。トレーニング後、nn が意図したとおりに機能していることを確認したいので、トレーニングに使用したのと同じデータをアクティブにします。ただし、すべてのアクティベーションは同じ結果を出力します。ニューラル ネットワークに関する基本的な概念を誤解していますか、それとも設計によるものですか?

隠しノードの数、hiddenclass タイプ、バイアス、学習率、トレーニング エポックの数、勢いを変更しようとしましたが、役に立ちませんでした。

これは私のコードです...

from pybrain.tools.shortcuts import buildNetwork                                
from pybrain.datasets import SupervisedDataSet                                  
from pybrain.supervised.trainers import BackpropTrainer

net = buildNetwork(2, 3, 1)  
net.randomize()                                                    

ds = SupervisedDataSet(2, 1)                                                       
ds.addSample([77, 78], 77)                                                         
ds.addSample([78, 76], 76)                                                         
ds.addSample([76, 76], 75)                                                         

trainer = BackpropTrainer(net, ds)                                                 
for epoch in range(0, 1000):                                                                   
    error = trainer.train()                                                                    
    if error < 0.001:                                                                          
        break                                                      

print net.activate([77, 78])                                                       
print net.activate([78, 76])                                                       
print net.activate([76, 76])  

これは結果の例です...ご覧のとおり、アクティベーション入力が異なっていても、出力は同じです。

[ 75.99893007]
[ 75.99893007]
[ 75.99893007]
4

2 に答える 2

4

私は同様の問題を抱えていました.次のことを行うことで精度を向上させることができました(IEは入力ごとに異なる答えを得る)。

  1. ニューラル ネットワークへの入出力の正規化/標準化

于 2015-03-24T16:19:46.823 に答える
2

最後に、データを 0 と 1 の間で正規化し、エラー率が 0.00001 になるまでトレーニングすることで、これを解決しました。トレーニングにははるかに時間がかかりますが、今では正確な結果が得られています。

于 2015-05-21T04:56:24.590 に答える