2012-04-26 154 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