【问题标题】:Method with its argument and using dictionary in a class方法及其参数并在类中使用字典
【发布时间】:2022-01-27 07:28:28
【问题描述】:
class Trainer():
  def __init__(self,param):
        ..........
        optimizer_target = getattr(optim, param['optimizer'])(net.parameters(), lr = param['learning_rate'])

     def train(epoch):
        .......... 

     def test(self, epoch):
        ..........

  def objective(self,train):
     
     params = {}
     model = Trainer(params)
     accuracy = model.test(trial)
      
     return accuracy 

if __name__ == '__main__':
    study = optuna.create_study(direction="maximize")
    study.optimize(objective)

当我在 main() 中调用这个目标函数时,它给了我不同的错误。不管我这样调用这个函数,它都会给我错误

study.optimize(lambda trial: Trainer.objective(trial)) 

如果我在没有类 Trainer 的情况下设计它,它会给我错误。请建议如何调用目标类的字典和在main()中调用目标函数

当前错误是

study.optimize(lambda 试验:Trainer.objective(试验)) 类型错误:objective() 缺少 1 个必需的位置参数:'trial'

【问题讨论】:

  • 您也需要发布错误。可能有很多不同的问题。
  • study.optimize(lambda trial: Trainer.objective(trial)) 类型错误:objective() 缺少 1 个必需的位置参数:'trial'
  • 请在您的问题中而不是在 cmets 部分中发布错误。

标签: python dictionary methods pytorch arguments


【解决方案1】:

您应该实例化您的类,或者将目标定义为@classmethod。例如:

class Trainer():
     def __init__(self,param):
        ..........
        optimizer_target = getattr(optim, param['optimizer'])(net.parameters(), lr = param['learning_rate'])

     def train(epoch):
        .......... 

     def test(self, epoch):
        ..........
     @classmethod
     def objective(self,train):
        params = {}

if __name__ == '__main__':
    study = optuna.create_study(direction="maximize")
    study.optimize(objective)

请参阅 python 文档中的类方法 (https://docs.python.org/3/library/functions.html#classmethod)。

【讨论】:

  • 非常感谢您的推荐。您的评论确实对我配置错误帮助很大。
  • 我还有一个问题,如果没有班级培训师,我怎么能做同样的事情。我有一个大项目,它具有用于自定义方法和数据集的多种功能,我无法在该项目中引入一个类
  • 我在目标函数中调用的 test() 函数给出了错误 'Trainer' object has no attribute 'test'
  • 没有代码很难说。也许您可以再问一个问题?
猜你喜欢
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多