if语句的语法

2024-06-07 06:59:05 发布

您现在位置:Python中文网/ 问答频道 /正文

1.当我运行代码时,我得到其他信息:打印(“未找到检查点”) 2.缩进错误:未缩进与任何外部缩进级别不匹配 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")

Tags: selfmodeldefloadtorchwindowdictpth
2条回答

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

您的代码没有正确缩进。应该是这样的

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()内定义了Load(),这在Python中是不允许的。希望这能解决你的问题

相关问题 更多 >