为什么一个输入比另一个有更多的权重

Why does one input have much more weight than another

我正在使用 Pybrain 中的简单入门网络。我用我的数据(大约 200 个数据点)训练它。此数据为 2 个输入和 1 个输出。

我做了一个测试,我保持一个输入相同,并在另一个输入的一系列可能的值上迭代。在第二个输入的所有可能值中,输出都是相同的。我必须比最高可能值高 234.17 倍才能改变它。

我还做了一个测试,我保持第二个输入不变,只改变了第一个。输出仅针对第一个输入的可能数据值的前 0.12% 发生变化。

我是否只需要使用更多数据来训练网络,或者我是否需要对网络的设置方式做一些不同的事情?

编辑:

这是设置 NN 和 returns 对一个值的预测的代码:

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 之间,最大可能值(或该数据集中保证的最大值)为 1,最小值为 0,我会得到更好的神经网络结果。

当有多个输入时(通常有多个输入),这尤其是个好主意,这样一来,网络就不会像给两个不同输入赋予大致相等的权重那样困难。客观上较小的输入对于所讨论的系统可能更重要,将两个输入缩放到 0 和 1 之间可以更容易地实现这一点。