需要帮助获取pybrain中可用的数据集

时间:2015-07-06 18:35:10

标签: python dataset neural-network pybrain

from pybrain.structure import FeedForwardNetwork
from pybrain.structure import LinearLayer, SigmoidLayer
from pybrain.structure import FullConnection
from pybrain.datasets import SupervisedDataSet
import numpy as np

X = np.loadtxt('xdatanorm.txt', dtype=float)
y = np.loadtxt('ydatanorm.txt', dtype=float)

n = FeedForwardNetwork()
inLayer = LinearLayer(35)
hiddenLayer = SigmoidLayer(18)
outLayer = LinearLayer(1)

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

in_to_hidden = FullConnection(inLayer, hiddenLayer)
hidden_to_out = FullConnection(hiddenLayer, outLayer)

n.addConnection(in_to_hidden)
n.addConnection(hidden_to_out)
n.sortModules()

DS = SupervisedDataSet(35,1)
DS.addSample(X,y)

开始使用pybrain让神经网络处理我的扩散能量数据。我不知道如何从我的X和y值获取数据集。 X是35个输入,y是1个输出,有148个样本。使用此代码我得到错误:“ValueError:无法将形状(148,35)的输入数组广播到形状(35)”

需要知道如何为pybrain正确准备数据集。

1 个答案:

答案 0 :(得分:0)

我相信.addSample()方法一次需要一个样本。而不是使用.addSample(),请尝试

assert(X.shape[0] == y.shape[0])
DS.setField('input', X)
DS.setField('target', y)

建议使用'assert()',因为.setField()方法不会像.addSample()那样验证数组维度。

有关详细信息,请参阅Pybrain dataset tutorial