V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kirswu
V2EX  ›  问与答

有没有大哥帮我看看一个 Python 的代码,学生党,看不出毛病

  •  
  •   kirswu · Jun 10, 2023 · 1949 views
    This topic created in 1064 days ago, the information mentioned may be changed or developed.
    metriclogger 的使用
    报错 AttributeError: 'MetricLogger' object has no attribute 'loss'
    6 replies    2023-06-10 18:14:35 +08:00
    kirswu
        1
    kirswu  
    OP
       Jun 10, 2023
    不会插入图片,可以看这个链接 https://ask.csdn.net/questions/7961618
    NoOneNoBody
        2
    NoOneNoBody  
       Jun 10, 2023
    print('* Acc@1 {top1.global_avg:.3f} Acc@5 {top5.global_avg:.3f} loss {losses.global_avg:.3f}'
    .format(top1=metric_logger.acc1, top5=metric_logger.acc5, losses=metric_logger.loss))

    这句,最后的 metric_logger.loss 从哪来的?
    conky
        3
    conky  
       Jun 10, 2023   ❤️ 1
    这个错误是因为在 MetricLogger 类中没有定义名为"loss"的属性。在代码中使用 metric_logger.loss 时,MetricLogger 类的__getattr__方法中没有找到该属性,因此抛出该错误。


    你可以在 MetricLogger 类中添加一个 loss 属性,初始值可以为 None ,然后修改_update 方法中的代码,在更新 loss 值时也同时更新 loss 属性的值即可。


    例如,在 MetricLogger 类的构造函数中添加以下代码:



    self.loss = None


    然后在_update 方法中的代码修改如下:


    Copy
    if k == 'loss':
    self.loss = v
    self.meters[k].update(v)


    这样就可以解决这个错误了。


    ---
    来着 chatgpt
    NoOneNoBody
        4
    NoOneNoBody  
       Jun 10, 2023
    切,原来好几个人答了……
    MiketsuSmasher
        5
    MiketsuSmasher  
       Jun 10, 2023   ❤️ 1
    下面好几个 GPT 回答,这里还有一个,有意思吗😅
    deorth
        6
    deorth  
       Jun 10, 2023 via Android
    我是学生党,请给我钱
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3206 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 10:56 · PVG 18:56 · LAX 03:56 · JFK 06:56
    ♥ Do have faith in what you're doing.