2 回答
TA贡献1872条经验 获得超3个赞
IMO [1],我认为问题的另一个原因是其他函数定义在与self. 我建议格式类似于:
def score(self):
# code for score...
# etc...
def save( self ):
# code for save
# etc...
def load(self):
# code for load...
# etc...
1:我没有经常使用 Python 来了解函数声明方面的所有合法性,但是在大多数语言中,据我所知,在语言设置为代码块的内容中不能有多个函数声明(大括号在 C/C++/Java 中,在 Python 中使用缩进/冒号)。如果有人知道 Python 的例外或适当的合法性,请随时在评论中直接告诉我)
TA贡献1804条经验 获得超2个赞
您的代码没有正确缩进。应该是这样的
def Score(self):
return sum(self.reward_window)/(len(self.reward_window)+1.)
def Save(self):
torch.save({'state_dict' : self.model.state_dict(),
'optimizer' : self.optimizer.state_dict,
},'last_brain.pth')
def Load(self) :
if os.path.isfile('last_brain.pth') :
print("=> Loading last brain...")
lastbrain = torch.load('last_brain.pth')
self.model.load_state_dict(checkpoint['state_dict'])
self.optimizer.load_state_dict(checkpoint['optimizer'])
print ("done")
else: print("no checkpoint found")
根据您的缩进,您正在定义Save()and Load()inside Score(),这在 Python 中是不允许的。希望这能解决您的问题。
添加回答
举报