编程语言
首页 > 编程语言> > python – 无法在pybrain上构建正确的ffnn

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

作者:互联网

我训练了一个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)

此行有效地将私有_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
来源: https://codeday.me/bug/20190703/1366755.html