无法在pybrain上建立正确的ffnn

2024-05-29 03:13:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我训练了一个ffnn来适应pybrain的未知功能。我是这样建立ffnn的

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

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

^{pr2}$

pybrain把参数还给我

^{3}$

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

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

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


Tags: 函数命令功能网络脚本参数netarg
1条回答
网友
1楼 · 发布于 2024-05-29 03:13:46

打字错误:

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

这行代码用元组有效地替换了private_setParamethers方法。尝试将此行替换为

^{pr2}$

会有帮助的。在

第二,看不出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

相关问题 更多 >

    热门问题