PyBrain神经网络的输出数据没有显示出多样性

2024-10-01 22:31:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用PyBrain开发一个神经网络,其规格如下:

1.)共3层

2)36个输入神经元

3)输入神经元是线性的

隐藏的乙状结肠

5)输出层是线性的

6)用num_hidden_层设置隐藏神经元的数目

7.)输出数量由num_output控制

代码是:

import pybrain
import csv
from pybrain.datasets.supervised import SupervisedDataSet
from pybrain.supervised.trainers import BackpropTrainer
import sys


with open(sys.argv[1], 'r') as csvfile:
    reader = csv.reader(csvfile)
    header = reader.next()
    dataset = SupervisedDataSet(len(header[:-1]), 1)
    test = []
    count = 1
    for line in reader:
        temp = []
        for e in line:
            temp.append(e.replace(',', ''))
        dataset.addSample(temp[:-1], temp[-1])

tstdata, trndata = dataset.splitWithProportion(0.25)
n = pybrain.FeedForwardNetwork()

num_inputs = len(header[:-1])
num_hidden_layer = 5
num_output = 1
inLayer = pybrain.LinearLayer(num_inputs)
hiddenLayer = pybrain.SigmoidLayer(num_hidden_layer)
outLayer = pybrain.LinearLayer(num_output)

n.addInputModule(inLayer)
n.addModule(hiddenLayer)
n.addOutputModule(outLayer)

in_to_hidden = pybrain.FullConnection(inLayer, hiddenLayer)
hidden_to_out = pybrain.FullConnection(hiddenLayer, outLayer)
n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)

n.sortModules()

trainer = BackpropTrainer(n, dataset=trndata, momentum = 0.1, verbose=True, weightdecay=0.01, learningrate=0.3)

for x in range(150):
    trainer.trainEpochs(10)

print n.activateOnDataset(tstdata)

我们的输入CSV有37列数值数据,最后一列是我们要训练我们的神经网络预测的列。在

当我们运行NN时,输出只是:[[-9.43679663][-9.43678922][-9.43679759][-9.43679592][-9.43679396][-9.43679395][-9.43679737]。这是我们预期的正确的大概数字(-8到-10),但是没有变化。如果我们只读入1/2的数据,我们得到完全相同的输出。这是否是我们输入数据的错误(例如错误的分布或数值范围)?还是我们的神经网络有问题?在


Tags: toinimportforoutput神经网络tempdataset

热门问题