所以,我正在做一个 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 中的正确模块匹配,然后插入这在所以相应的层=已经列出了尺寸的那个模块。
很明显,出了什么大问题,而且已经太远了,以至于我的大脑无法理解它……它失去了所有的理由,每次我看到它我都会害怕……请帮助我或告诉我我创造了一个可憎之类的东西,我猜...