所以,我正在研究一個Pybrain類型的項目,並且我被卡住了一部分。 到目前爲止,程序需要一個元組並使用'其中一個花式的vars()['string']
語句爲其分配變量。具體而言,它需要在數量的元組並將其分配給一個「layerx
」值,其中x
是層的數量(按順序,層1,2,3,等),使得所述數字是該尺寸層。將元組中的二元運算符匹配到字典項目
程序我拼命謙卑地來找你幫助的部分是什麼,應在程序中的下一個步驟;它需要一個元組的元組(元組的數量必須=層數),並且元組包含1/0。
它應該確定在哪一層使用什麼類型的Pybrain層,然後塞在該層的尺寸值,從本質上講,創建層變量。我已經玩了一段時間了,而且我已經變得......扭曲......令人困惑的代碼塊。
請原諒令人費解的變量名,我以爲我是通過讓他們有些具體聰明:
moduleconbuff = 0
modulebuffer = 'module'
correspondinglayerbuff = 0
moduleconfigcopy = tuple(moduleconfig)
try: #Always triggers except, but it's pretty screwed up
while correspondinglayerbuff <= len(self.layers): #keeps track of how many layer/module pairs have been assigned
for elm in moduleconfigcopy:
for x in elm:
if x == 1:
moduledimmension = [layerbuff+'%s'%(correspondinglayerbuff)]
modulesdict = {1: pybrain.GaussianLayer(moduledimmension), 2: pybrain.LinearLayer(moduledimmension),\
3: pybrain.LSTMLayer(moduledimmension),4: pybrain.SigmoidLayer(moduledimmension),5: pybrain.TanhLayer(moduledimmension)} #this dict pairs integers with pybrain modules
vars()[modulebuffer +'%s'%(correspondinglayerbuff)]=modulesdict(moduleconbuff) #should return something like 'Module1 = pybrain.GaussianLayer(5) when complete
print vars()[modulebuffer+'%s'%(correspondinglayerbuff)]
moduleconbuff=0
correspondinglayerbuff+=1
print 'Valid: ', moduleconfigcopy, elm
continue
else:
elm = elm[1:]
print 'Invalid: ', moduleconfigcopy, elm
moduleconbuff+=1
except:
print 'Invalid!!!'
老實說,我記不清在它發生了什麼事的。在開始 元組「moduleconfig
」被認爲是元組(嵌套元組)與二元運算符的元組,它應該停止時的元組中的一個具有如圖1所示,該操作員與在Pybrain正確的模塊匹配,並且然後將其插入,以便相應的層=已列出dimmensions的模塊。
很明顯,有些事情發生了非常嚴重的錯誤,而且我的大腦無法理解它,這已經太遙遠了......它失去了所有的理由,每次看到它,我都會害怕......請幫助我或告訴我,我創建了一個憎惡什麼,我猜...
快速提示:使用'except'來捕獲特定的異常(例如'NameError'或'TypeError'。嘗試將try塊中的代碼量減至最少,以避免錯誤發生。並且只捕捉你可以處理的錯誤。看起來你的'try..except'塊沒有做這些事情。做這樣的事情將有助於「我忘記了正在發生的事情」部分代碼。 – 2012-07-21 07:06:21
我只是使用try ... except塊作爲臨時調試點,直到我可以計算出代碼並轉到具體信息....指出,儘管 – 2012-07-21 07:08:35
裸體除了不會幫助您調試,因爲它減少了,而不是更多的信息。例如,而不是「IndexError」(和錯誤的特定行),現在你只是得到一個模棱兩可的「無效!!」打印到標準輸出。 – 2012-07-21 07:09:58