私は何か間違ったことをしているのか、それとも結果が本当に悪いのか疑問に思っています。ドキュメントに示されている最も単純なNNの例を想定してみましょう。
>>>net = buildNetwork(2, 3, 1, bias=True)
>>> ds = SupervisedDataSet(2, 1)
>>> ds.addSample((0, 0), (0,))
>>> ds.addSample((0, 1), (1,))
>>> ds.addSample((1, 0), (1,))
>>> ds.addSample((1, 1), (0,))
>>> trainer = BackpropTrainer(net, ds)
>>> trainer.trainUntilConvergence()
>>> print net.activate((0,0))
>>> print net.activate((0, 1))
>>> print net.activate((1, 0))
>>> print net.activate((1, 1))
例えば
>>> print net.activate((1,0))
[ 0.37855891]
>>> print net.activate((1,1))
[ 0.6592548]
予想は0でした。明らかに丸めることができることはわかっていますが、それでも、このような単純な例では、ネットワークがはるかに正確になると思います。ここでは「動作中」と呼ぶことができますが、これは非常に使用できないため、重要な何かが欠落していると思われます...
トレーナーに設定verbose=True
すると、かなり小さなエラーが表示される可能性があります(合計エラー:0.0532936260399など)
ネットワークのエラーは5%だと思いますが、その後のアクティブ化関数でどのようにオフにすることができますか?
私は明らかにもっと複雑なことにpybrainを使用していますが、同じ問題があります。ネットワークでエラーが0.09程度と表示されていても、テストサンプルの約50%が間違っています。
ヘルプplsはありますか?