2013-05-27 84 views
2

我正在使用包'pybrain'並嘗試構建可識別圖像的神經網絡。分析照片的部分工作得很好,但作爲一個剛接觸pybrain的人 - 我不習慣使用它。不知怎的,我不斷收到以下錯誤:AttributeError:'NoneType'對象沒有屬性'indim'

AttributeError: 'NoneType' object has no attribute 'indim' 

我試圖解決這個問題如一日左右,仍然沒有得到它。這裏是我的代碼的一部分:

target=np.array([[0],[1]]) 
input=getNumberOfImages("photosAfterAverage/",1,2) 
ds=SupervisedDataSet(72,1) 
ds.setField('target',target) 
ds.setField('input',input) 
print ds.data 
net=buildNewNetwork(72,76,1) 
trainer = BackpropTrainer(net, ds) 

假設輸入是包含每個單元72個單元格的2維。

編輯:按照要求,整個錯誤:

Traceback (most recent call last): 
     File "C:\Users\Eytan\Desktop\Mah\Kids_Painting\pyBrainDiffrenceBetween5GradeAnd2Grade.py", line 53, in <module> 
     trainer = BackpropTrainer(net, ds) 
     File "C:\Python27\pybrain\supervised\trainers\backprop.py", line 35, in __init__ 
     self.setData(dataset) 
     File "C:\Python27\pybrain\supervised\trainers\trainer.py", line 22, in setData 
     assert dataset.indim == self.module.indim 
    AttributeError: 'NoneType' object has no attribute 'indim' 

它可能有助於指出,下面的代碼工作:

net=buildNetwork(2,500,1) 
ds=SupervisedDataSet(2,1) 
input=array([[0,1],[1,3434],[34,65],[40,56]]) 
target=array([[0],[1],[0],[1]]) 
ds.setField('input',input) 
ds.setField('target',target) 
print ds.data 
trainer = BackpropTrainer(net, ds) 

非常感謝回答,我找到了問題 - 應該使用的正確功能是buildNetwork而不是buildNewNetwork。

+0

你的代碼中沒有'indim'。請提供堆棧跟蹤。這使得解決這個問題變得更容易。 –

回答

0

好像數據集必須作爲keyword argument發送。嘗試,

trainer = BackpropTrainer(net, dataset=ds) 
+0

謝謝,但沒有這不是問題,它沒有解決它。 – user2129468