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正确准备数据集。
答案 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。