バイナリを学ぶためにネットワーク(PyBrain)を取得しようとしています。この私のコードとそれは約8の戻り値を保持しますが、このターゲットでアクティブにすると9に戻るはずです。PyBrainがバイナリを学ぶことができない理由
from pybrain.tools.shortcuts import buildNetwork
from pybrain.structure import *
from pybrain.datasets import *
from pybrain.supervised.trainers import BackpropTrainer
from matplotlib.pyplot import *
trains = 3000
hiddenLayers = 4
dim = 4
target = (1, 0, 0, 1)
ds = SupervisedDataSet(dim, 1)
ds.addSample((0, 0, 0, 0), (0,))
ds.addSample((0, 0, 0, 1), (1,))
ds.addSample((0, 0, 1, 0), (2,))
ds.addSample((0, 0, 1, 1), (3,))
ds.addSample((0, 1, 0, 0), (4,))
ds.addSample((0, 1, 0, 1), (5,))
ds.addSample((0, 1, 1, 0), (6,))
ds.addSample((0, 1, 1, 1), (7,))
ds.addSample((1, 0, 0, 0), (8,))
net = buildNetwork(dim, hiddenLayers, 1, bias=True, hiddenclass=SigmoidLayer)
trainer = BackpropTrainer(net, ds)
tests = []
for i in range(trains):
trainer.train()
tests.append(net.activate(target))
plot(range(len(tests)), tests)
print net.activate(target)
show()
私はSigmoidLayerに番号隠れ層、TanhLayerからhiddenclassを調整しようとした列車の数を変化させるが、それは常に約500回(データセットにネットワークを訓練する)に収束しています。私は背部伝播とは違うトレーナーを使用するべきですか?もしそうなら、なぜですか?
いつも約500に収束しますか? 500何? –
ネットワークをデータセットにトレーニングした後に500回 – Evan
どのような出力伝達関数を使用していますか?タンシグ?リニア? – DrFalk3n