为了账号安全,请及时绑定邮箱和手机立即绑定

if 语句的语法

if 语句的语法

慕运维8079593 2022-07-26 20:48:18
1.当我运行代码时,我得到 else: print("no checkpoint found") 2.IndentationError: unindent does not match any external indentation level 3.我试图修复它,但我不能  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') :  # this is where i get the syntax error                    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")
查看完整描述

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 的例外或适当的合法性,请随时在评论中直接告诉我)


查看完整回答
反对 回复 2022-07-26
?
慕婉清6462132

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 中是不允许的。希望这能解决您的问题。


查看完整回答
反对 回复 2022-07-26
  • 2 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信