首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >简单回归示例pyBrain

简单回归示例pyBrain
EN

Stack Overflow用户
提问于 2014-12-12 00:31:27
回答 1查看 1.7K关注 0票数 5

我试图在pyBrain上做最简单的回归,但不知何故我失败了。

神经网络应该学习函数Y=3*X

代码语言:javascript
复制
from pybrain.supervised.trainers import BackpropTrainer
from pybrain.datasets import SupervisedDataSet
from pybrain.structure import FullConnection, FeedForwardNetwork, TanhLayer, LinearLayer, BiasUnit
import matplotlib.pyplot as plt
from numpy import *

n = FeedForwardNetwork()
n.addInputModule(LinearLayer(1, name = 'in'))
n.addInputModule(BiasUnit(name = 'bias'))
n.addModule(TanhLayer(1,name = 'tan'))
n.addOutputModule(LinearLayer(1, name = 'out'))
n.addConnection(FullConnection(n['bias'], n['tan']))
n.addConnection(FullConnection(n['in'], n['tan']))
n.addConnection(FullConnection(n['tan'], n['out']))
n.sortModules()

# initialize the backprop trainer and train
t = BackpropTrainer(n, learningrate = 0.1, momentum = 0.0, verbose = True)

#DATASET
DS = SupervisedDataSet( 1, 1 )
X = random.rand(100,1)*100
Y = X*3+random.rand(100,1)*5
for r in xrange(X.shape[0]):
    DS.appendLinked((X[r]),(Y[r]))

t.trainOnDataset(DS, 200)
plt.plot(X,Y,'.b')
X=[[i] for i in arange(0,100,0.1)]
Y=map(n.activate,X)
plt.plot(X,Y,'-g')

它不会学到任何东西。我尝试删除隐藏层(因为在本例中我们甚至不需要它),网络开始预测NaNs。到底怎么回事?

编辑:这是解决我的问题的代码:

代码语言:javascript
复制
#DATASET
DS = SupervisedDataSet( 1, 1 )
X = random.rand(100,1)*100
Y = X*3+random.rand(100,1)*5
maxy = float(max(Y))
maxx = 100.0
for r in xrange(X.shape[0]):
    DS.appendLinked((X[r]/maxx),(Y[r]/maxy))

t.trainOnDataset(DS, 200)

plt.plot(X,Y,'.b')
X=[[i] for i in arange(0,100,0.1)]
Y=map(lambda x: n.activate(array(x)/maxx)*maxy,X)
plt.plot(X,Y,'-g')
EN

回答 1

Stack Overflow用户

发布于 2014-12-12 01:21:12

基本的pybrain神经元将输出0到1之间的值。将Y除以300 (最大可能值),你会得到更好的结果。

更一般地,找到数据集的最大Y,并根据该Y缩放所有内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27427801

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档