PyBrain神经网络不会收敛于简单的f(x)= x + 1函数

时间:2016-08-27 07:07:10

标签: python neural-network pybrain

我使用以下PyBrain神经网络代码将1添加到给定输入。代码不知何故从不收敛。

我尝试了各种学习率和不同数量的隐藏层,神经元等,没有任何运气。

任何帮助?

import numpy, math
from pybrain.datasets import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.structure import SigmoidLayer, LinearLayer
from pybrain.tools.shortcuts import buildNetwork

net = buildNetwork(1,
                   100, # number of hidden units
                   1,
                   bias = True,
                   hiddenclass = SigmoidLayer,
                   outclass = LinearLayer
                   )

xvalues = numpy.arange(100)
yvalues = (xvalues) + 1

ds = SupervisedDataSet(1, 1)
for x, y in zip(xvalues, yvalues):
    ds.addSample((x,), (y,))

print(ds['input'])
print(ds['target'])

trainer = BackpropTrainer(net, ds, verbose=True)
trainer.trainUntilConvergence()

import matplotlib.pyplot as plt
fig, ax = plt.subplots()
y=xvalues
y_lin = [ net.activate([x]) for x in xvalues ]
ax.plot(y, y_lin, 'bo', lw=4)
ax.plot(y, yvalues, 'r^', lw=2)
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()

查看预期值和预测值之间的差异。

奇怪的是,如果我给出10个训练值而不是100个,那么网似乎会收敛。

感谢。

0 个答案:

没有答案
相关问题