2014-07-24 49 views
2

我想在Python中設置一個神經網絡(使用PyBrain)用於預測目的。我已經設置了一個小模擬數據集,但是當擴展這個網絡以適應更大的數據集時,我遇到了一個關於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

assert語句檢查條件是否爲真。在這種情況下,如果您的network的內部維度(indim)與您的數據集ds相同。因爲他們都沒有,引發錯誤:

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

要解決這個問題:

確保您networkds具有相同的內部尺寸,例如:

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

非常感謝你! :) – user3847447

+1

更好:'network = buildNetwork(ds.indim,128,ds.outdim,bias = True)' –

-2

assert語句檢查一個條件並返回一個布爾值。 AssertionError告訴你,assert dataset.indim == self.module.indim的結果是錯誤的,將代碼置於錯誤狀態,從而返回Assertion錯誤。如果這是您輸入的代碼的預期條件,請捕獲異常並繼續。

+1

聲明錯誤來自模塊,而不是他自己的代碼。 – Banana