2012-04-26 133 views
1

我想为我的10维数据集生成一个网格,同时这样做我遵循http://pybrain.org/docs/tutorial/fnn.html的代码。这我在执行和投掷的错误代码是:Pybrain实施投掷错误

ticks = arange(-3.,6.,0.2) 
X, Y = meshgrid(ticks, ticks) 
# need column vectors in dataset, not arrays 
griddata = ClassificationDataSet(10,1, nb_classes=3) 
for i in xrange(X.size): 
     griddata.addSample([X.ravel()[i],Y.ravel()[i]], [0]) 

,我得到的错误是:

File "a.py", line 224, in <module> 
    griddata.addSample([X.ravel()[i], Y.ravel()[i]], [0]) 
File "a.py", line 45, in addSample 
    self.appendLinked(inp, target) 
File "a.py", line 216, in appendLinked 
    self._appendUnlinked(l, args[i]) 
File "a.py", line 198, in _appendUnlinked 
    self.data[label][self.endmarker[label], :] = row 
ValueError: cannot copy sequence with size 2 to array axis with dimension 7 

我没有得到如何纠正错误。

回答

4

答案已经由Python给出:尺寸是你的问题。您可以创建一个包含10个维度的数据集: ClassificationDataSet(in_dim, out_dim, class_num) 第一个数字用于维度。 然后您尝试向该数据集中添加具有2维的样本: griddata.addSample([in1, in2, in3..., in_last], [out1])。 您在这里提供的示例完全来自pybrain教程,只是您错误地复制了一个数字,即in_dimensions。在这个例子中是2。然后它应该工作。

+0

我在本教程后面遇到了同样的问题,现在当我尝试调用'activateOnDataset'时,得到AssertionError(8,2),因为我的数据集需要8个输入,而griddata需要两个。我怎样才能用8个输入建立一个sqaure网格? – mattgabor 2016-10-19 15:38:30

+0

你是什么意思@mattgabor数据集需要8个输入和griddata需要2? 无论您打电话来,您的训练数据集以及您的测试数据集都必须具有相同的尺寸。 – najuste 2016-10-20 06:56:01

+0

好吧,这是有道理的,所以我需要griddata的维度'ClassificationDataSet(10,1,nb_classes = 3)',所以我必须添加10个样本,而不是像上面提到的两个样本。但是,如果我想在pybrain教程中使用'X.ravel()[i]'和'Y.ravel()[i]',我怎样才能为10个输入做ravel? – mattgabor 2016-10-20 07:11:23