python - 无法在 pybrain 上构建正确的 ffnn

标签 python pybrain

我训练了一个 ffnn 来适应 pybrain 的未知函数。我这样构建 ffnn

net = buildNetwork(1, 2, 1,hiddenclass=TanhLayer)

我告诉pybrain用命令打印网络的参数

print net.params

然后 pybrain 将参数返回给我

(1.76464967 , 0.46764103 , 1.63394395 ,-0.95327762 , 1.19760151, -1.20449402, -1.34050959)

现在我想在另一个脚本中使用这个拟合函数。我试过了

def netp(Q):
    net = buildNetwork(1, 2, 1,hiddenclass=TanhLayer)
    net._setParameters=(1.76464967 , 0.46764103 , 1.63394395 ,-0.95327762 , 1.19760151, -1.20449402, -1.34050959)
    arg=1.0/float(Q)
    p=float(net.activate([arg]))
    return p

问题是从网络返回的值完全不在意。例子

 0.0749046652125 1.0
-2.01920546405 0.5
-1.54408069672 0.333333333333
 1.05895945271 0.25
-1.01314347373 0.2
 1.56555648799 0.166666666667
 0.0824497539453 0.142857142857
 0.531176423655 0.125
 0.504185707604 0.111111111111
 0.841424535805 0.1

其中第一列是网络的输出,第二列是输入。网络的输出必须接近输入值。 有什么问题?我哪里做错了?是过拟合的问题还是我遗漏了什么?

最佳答案

打字错误:

net._setParameters=(1.76464967 , 0.46764103 , 1.63394395 ,-0.95327762 , 1.19760151, -1.20449402, -1.34050959)

此行有效地将私有(private) _setParamethers 方法替换为元组。尝试将此行替换为

net._setParameters([1.76464967 , 0.46764103 , 1.63394395 ,-0.95327762 , 1.19760151, -1.20449402, -1.34050959])

会有帮助。

其次,看不到1/Q操作的原因,就这么简单

>>> def netp(Q): return float(net.activate([Q]))
>>> for i in inp:
...   print '{}\t{:.5f}'.format(i, netp(i))

产量

1.0      0.97634
0.5      0.46546
0.33333  0.29013
0.25     0.20762
0.2      0.16058
0.16666  0.13042
0.14285  0.10952
0.125    0.09421
0.11111  0.08254
0.1      0.07335

关于python - 无法在 pybrain 上构建正确的 ffnn,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20546456/

相关文章:

neural-network - PyBrain 中的 _convertToOneOfMany

python - 无法退出带有嵌入式 iPython Qtconsole 的 PyQt5 应用程序

python - Scrapy——抓取页面并抓取下一页

python - pybrain NNregression工具参数

python - PyBrain:从头开始创建网络时,您如何以及在何处创建偏差?

python - PyBrain 中 trainer.train() 的错误输出指的是什么?

python - 如何在 Mininet 中运行 sudo mn --custom 选项?

python - 在 Python 中输入对象命名空间

python - 尝试在 Anaconda 中安装软件包时出现错误解释器错误

python - 在 Pybrain 中保存神经网络测试输出