pybrain的神经网络回归

我需要使用前馈网络解决回归问题,并且我一直在尝试使用PyBrain来做到这一点。由于pybrain的参考资料中没有回归的示例,因此我尝试将其分类示例改编为回归,但是没有成功(分类示例可以在这里找到:http : //pybrain.org/docs/tutorial/fnn.html)。以下是我的代码:


第一个函数将numpy数组形式的数据转换为pybrain SupervisedDataset。我使用SupervisedDataset,因为根据pybrain的参考,它是问题回归时要使用的数据集。参数是一个具有特征向量(数据)及其预期输出(值)的数组:


def convertDataNeuralNetwork(data, values):


fulldata = SupervisedDataSet(data.shape[1], 1)


for d, v in zip(data, values):


    fulldata.addSample(d, v)    


return fulldata

接下来,是运行回归的函数。train_data和train_values是火车特征向量及其预期输出,test_data和test_values是测试特征向量及其预期输出:


regressionTrain = convertDataNeuralNetwork(train_data, train_values)


regressionTest = convertDataNeuralNetwork(test_data, test_values)


fnn = FeedForwardNetwork()


inLayer = LinearLayer(regressionTrain.indim)

hiddenLayer = LinearLayer(5)

outLayer = GaussianLayer(regressionTrain.outdim)


fnn.addInputModule(inLayer)

fnn.addModule(hiddenLayer)

fnn.addOutputModule(outLayer)


in_to_hidden = FullConnection(inLayer, hiddenLayer)

hidden_to_out = FullConnection(hiddenLayer, outLayer)


fnn.addConnection(in_to_hidden)

fnn.addConnection(hidden_to_out)


fnn.sortModules()


trainer = BackpropTrainer(fnn, dataset=regressionTrain, momentum=0.1, verbose=True, weightdecay=0.01)


for i in range(10):


    trainer.trainEpochs(5)


    res = trainer.testOnClassData(dataset=regressionTest )


    print res

当我打印res时,它的所有值都是0。我试图使用buildNetwork函数作为构建网络的快捷方式,但是效果不佳。我也尝试过不同种类的层和隐藏层中不同数量的节点,但是没有运气。


有人对我在做什么错有任何想法吗?另外,一些pybrain回归示例确实有帮助!我一看都找不到。


富国沪深
浏览 169回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python