pytorch_lightning与lightning.pytorch冲突报错:ValueError: Expected a parent

本文讨论了在使用Darts进行预测时,如何处理Optuna超参数优化与pytorch_lightning库的新旧版本冲突,提供了两种方法并强调了版本管理的重要性。
摘要由CSDN通过智能技术生成

问题描述

使用darts做时间序列预测时,使用optuna做超参数优化,调用study.optimize(objective, timeout=7200),报错:ValueError: Expected a parent

原因

新版本的pytorch_lightning改名为lightning,在函数objective中采用了pytorch_lightningEarlyStopping的回调函数,同时采用了from optuna.integration import PyTorchLightningPruningCallbackPyTorchLightningPruningCallback回调函数,在optuna的3.5版本中采用了lightning.pytorch来代替pytorch_lightning,因此同时存在pytorch_lightninglightning.pytorch两个新老版本引发了冲突。

解决方式

  1. 定义OptunaPruning类替代PyTorchLightningPruningCallback,使两个版本兼容(不推荐)。
class OptunaPruning(PyTorchLightningPruningCallback, pytorch_lightning.Callback):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
def objective(trial):
    callback = [OptunaPruning(trial, monitor="val_loss")]

参考连接:https://github.com/optuna/optuna/issues/4689

2.统一使用pytorch_lightninglightning(推荐)。
我的具体的做法是,卸载了optuna3.5,重新安装了optuna3.4,因为optuna3.4采用的是旧版的pytorch_lightning

注意

1.下载lightning的时候注意要pytorch、python版本之间的兼容。
在这里插入图片描述
lightning是真的坑,直接安装如果和torch版本不兼容会直接把原来的torch卸载掉,然后安装最新版本的torch,然后就会出现各种cuda、显卡驱动不适配等问题,所以下载的时候一定加上对应的版本号。
2.吐槽:怎么还有库改名字的呀,之前叫pytorch_lightning,现在又改名叫lightning,导致依赖于他们的库变得很乱,强烈吐槽!!!

  • 13
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值