使用以下代码:
tf = open('defl_07h.csv','r')
for line in tf.readlines():
data = [float(x) for x in line.strip().split(';') if x != '']
indata = tuple(data[:1])
outdata = tuple(data[1:])
ds.addSample(indata,outdata)
net = buildNetwork(ds.indim,20,ds.outdim,recurrent=True)
t = BackpropTrainer(net,learningrate=0.01,momentum=0.5,verbose=True)
t.trainOndataset(ds,10)
t.testOnData(verbose=True)
获得如下相同的输出:
出局:[3.479] 正确:[11.86] 错误:35.12389858 出局:[3.479] 正确:[12.1] 错误:37.16423359 出局:[3.479] 正确:[12.28] 错误:38.73228485
然后网络结构产生了:
^{pr2}$哪里会出错?在
我看到你的代码样本有一些问题,它们导致你的网络没有学到任何有意义的东西。以下是您的代码存在的一些问题:
BackpropTrainer
,它通常需要训练超过10个时代。试试100或1000。(或者试试RPromMinusTrainer
,这是我个人喜欢的。)这两个问题都导致你的网络只能学习输出一个值。在
我对您的代码做了一点修改,以包含规范化和
RPropMinusTrainer
以及相当数量的迭代(RProp-需要更少的时期):我得到以下输出:
^{pr2}$不是完美的,但是预测会随着实际的标准化值而增加,就像原始的(预标准化的)数据一样。在
附言:我知道这是一个老问题,但我以前也遇到过这个问题,认为它可能会对某些人有所帮助。所以,如果你在神经网络的战壕里却一无所获,记得问问自己:我的神经网络需要标准化的数据吗?我训练够了吗?在
相关问题 更多 >
编程相关推荐