我在Pybrain中使用简单的入门网络。我用我的数据训练了它(大约200个数据点)。该数据是2个输入和1个输出。
我做了一个测试,我保持一个输入相同,并迭代一系列可想到的值为另一个输入。在第二个输入的可能值中输出相同。我必须比最高值高出234.17倍才能让它发生变化。
我也做了一个测试,我保持第二个输入相同,只改变了第一个输入。输出仅针对第一个输入的第一个0.12%的可能数据值进行了更改。
我是否只需要使用更多数据训练网络,或者我是否需要根据网络的设置方式做些不同的事情?
编辑:
以下是设置NN并返回一个值的预测的代码:
net = buildNetwork(2, 3, 1)
ds = SupervisedDataSet(2, 1)
for each in train_data:
ds.addSample((each[0], each[1]), (each[2],)) #adds training data to Data Set
print len(ds)
trainer = BackpropTrainer(net, ds) #sets up trainer
print trainer.trainUntilConvergence(maxEpochs=2000, verbose=True) #Trains
print net.activate([(1420884000%86400),51.74]) #print prediction
一个输入是一天中的时间(从午夜开始的秒数)。另一个输入是当前温度。输出应该是基于训练数据在任意时间内的预测温度。
答案 0 :(得分:1)
如果输入全部缩放到介于0和1之间,并且最大可能值(或该数据集中保证的最大值)为1且最小值为0,则使用神经网络可获得更好的结果。
当存在多个输入时,这是一个特别好的想法,因为通常情况下,网络以两个不同输入的大致相等的权重开始并不困难。客观上较小的输入对于所讨论的系统可能更重要,并且将两个输入缩放到0到1之间使得这更容易实现。