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