私はPybrainで単純なニューラルネットワークを訓練しようとしています。トレーニングの後、nnが意図したとおりに動作していることを確認したいので、トレーニングに使用したのと同じデータを有効にします。 しかし、すべてのアクティベーションは同じ結果を出力します。ニューラルネットワークに関する基本的な考え方を誤解していますか、それとも設計上のものですか?Pybrainは任意の入力に対して同じ結果を出力します
隠しノードの数、隠しクラスの種類、バイアス、学習率、トレーニングエポックの数、無駄な勢いを変更しようとしました。
これは私のコードです...
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]
ノード間の初期シナプス強度をランダム化しましたか? – Renan
とnet.randomize?私はすでにそれを試していたが、ちょうどその場合にそれを追加し、同じ問題が発生している。これを反映するコード例を更新しました。 –
ANNが正しく機能するためには、そのシナプスが生成されたときにそのシナプスをランダム化する必要があります。彼らがすべて同じ強さを持っている場合、最後のレイヤーのすべてのニューロンに同じ出力が得られるので、本当に本当にそうだと思いました。 – Renan