2014-07-24 2 views
2

예측을 위해 PyBrain을 사용하여 Python에서 신경망을 설정하려고합니다. 이미 작은 모의 데이터 세트로 이미 하나를 설정했지만 더 큰 데이터 세트를 위해이 네트워크를 확장하면 AssertionError와 관련된 문제가 발생합니다. 여기 내 코드입니다 :트레이너를위한 데이터 설정시 PyBrain AssertionError

ds = ClassificationDataSet(231, 1) 

for x in range(inputData[0].size): 
    ds.addSample(inputData[:,x], inputAnswers[x]) 

network = buildNetwork(191, 128, 1, bias=True, hiddenclass=TanhLayer) 
network.randomize() 
trainer = BackpropTrainer(network) 
trainer.setData(ds) 

는 여기에 오류 메시지가 내가받을 수 있습니다 :

File "ANN_rawData.py", line 45, in <module> 
trainer.setData(ds) 
File "[path]", line 22, in setData 
assert dataset.indim == self.module.indim 
AssertionError 

이 오류가 무엇을 의미합니까, 어떻게 고칠 수 있을까? 미리 감사드립니다.

+0

지연된 "해결책": -O 플래그로 스크립트를 실행하여 [모든 선언 해제] (http://stackoverflow.com/a/1273233/953482). – Kevin

답변

3

조건문이 참인지를 확인합니다. 이 경우 network의 내부 크기 (indim)가 데이터 세트와 동일하면 ds입니다. 그들이 없기 때문에 오류가 발생합니다 :

>>> ds = ClassificationDataSet(231, 1) 
>>> network = buildNetwork(191, 128, 1, bias=True) 
>>> assert ds.indim == network.indim # 231 != 191, error! 
AssertionError 

이 문제를 해결하려면 :

>>> ds = ClassificationDataSet(191, 1) 
>>> network = buildNetwork(191, 128, 1, bias=True) 
>>> assert ds.indim == network.indim # 191 == 191, okay! 
:

networkds 예를 들어로서, 같은 내부 차원이 있는지 확인

+0

대단히 감사합니다! :) – user3847447

+1

더 나은 :'network = buildNetwork (ds.indim, 128, ds.outdim, bias = True)' –

-2

assert 문은 조건을 검사하고 부울 값을 반환합니다. AssertionError는 assert dataset.indim == self.module.indim의 결과가 false이고 코드를 잘못 입력하여 어설 션 오류를 반환한다고 알려줍니다. 입력 한 코드에 예상되는 조건 인 경우 예외를 catch하고 계속하십시오.

+1

어설 션 오류는 자신의 코드가 아닌 모듈에서 발생합니다. – Banana