2012-04-26 1 views
1

그래서 나는 http://pybrain.org/docs/tutorial/fnn.html에서 코드를 따르고있는 동안 10 차원의 데이터 집합에 대한 그리드를 생성하려고합니다. 내가 오류를 구현하고 던지고 코드는 다음과 같습니다 나는 점점 오전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

답변은 이미 파이썬에서 제공합니다. 치수가 문제입니다. 첫 번째 숫자는 특성 항목의 크기이므로 ClassificationDataSet(in_dim, out_dim, class_num) 의 10 가지 크기로 된 데이터 집합을 만듭니다. 그런 다음 데이터 세트에 2 차원의 샘플을 추가하려고 시도합니다 ( griddata.addSample([in1, in2, in3..., in_last], [out1])). 여기서 제공하는 예제는 pybrain 튜토리얼에서 나온 것입니다. 하나의 숫자 인 in_dimensions를 잘못 복사 한 것입니다. 이 예에서는 2입니다. 그리고 나서 효과가 있습니다.

+0

이 튜토리얼에 따라 같은 문제가 발생했다. 문제가 해결되었지만 이제는 activateOnDataset을 호출하려고 할 때 AssertionError (8,2)를 얻는다. 내 데이터 집합이 8 개의 입력을 받고 griddata가 2를 취하기 때문이다. 8 입력으로 sqaure 그리드를 만들려면 어떻게해야합니까? – mattgabor

+0

@mattgabor 데이터 집합이 8 개의 입력을 받고 griddata가 2를 사용한다는 것은 무엇을 의미합니까 ?? 당신이 무엇을 부르든지, 당신의 훈련 데이터 세트와 당신의 시험 데이터 세트는 같은 차원을 가져야합니다. – najuste

+0

그게 합리적 이네, 그래서 griddata가 'ClassificationDataSet (10,1, nb_classes = 3)'차원이되어야하기 때문에 위에서 언급 한 두 가지 대신에 10 개의 샘플을 추가해야합니다. 그러나 pybrain 튜토리얼에서와 같이 X.ravel() [i]'와'Y.ravel() [i] '를 사용하고 싶다면 어떻게하면 10 개의 입력에 대해 배울 수 있습니까? – mattgabor