【发布时间】:2017-01-13 09:46:14
【问题描述】:
我正在尝试建立一个网络(PyBrain)来学习二进制。这是我的代码,它的返回值保持在 8 左右,但当我使用此目标激活时,它应该返回 9。
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()
我尝试调整隐藏层的数量,从 TanhLayer 到 SigmoidLayer 的隐藏类,并改变了火车的数量,但它总是收敛大约 500 次(将网络训练到数据集)。我应该使用与反向传播不同的训练器吗?如果是,为什么?
【问题讨论】:
-
总是收敛在 500 左右? 500 什么?
-
将网络训练到数据集 500 次后
-
你使用什么样的输出传递函数?坦西格?线性的?
标签: python neural-network artificial-intelligence pybrain