2 回答

TA貢獻(xiàn)1872條經(jīng)驗(yàn) 獲得超4個(gè)贊
IMO [1],我認(rèn)為問題的另一個(gè)原因是其他函數(shù)定義在與self. 我建議格式類似于:
def score(self):
# code for score...
# etc...
def save( self ):
# code for save
# etc...
def load(self):
# code for load...
# etc...
1:我沒有經(jīng)常使用 Python 來了解函數(shù)聲明方面的所有合法性,但是在大多數(shù)語言中,據(jù)我所知,在語言設(shè)置為代碼塊的內(nèi)容中不能有多個(gè)函數(shù)聲明(大括號(hào)在 C/C++/Java 中,在 Python 中使用縮進(jìn)/冒號(hào))。如果有人知道 Python 的例外或適當(dāng)?shù)暮戏ㄐ?,?qǐng)隨時(shí)在評(píng)論中直接告訴我)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超2個(gè)贊
您的代碼沒有正確縮進(jìn)。應(yīng)該是這樣的
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")
根據(jù)您的縮進(jìn),您正在定義Save()and Load()inside Score(),這在 Python 中是不允許的。希望這能解決您的問題。
添加回答
舉報(bào)