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

问题描述

使用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)
在使用 PyTorch Lightning 时,如果遇到 `ModuleNotFoundError: No module named 'pytorch_lightning.metrics.functional.reduction'` 错误,通常是因为项目依赖的某些模块或包版本不兼容或缺失。 这个问题的一个常见原因是:PyTorch Lightning 的较新版本(例如 v1.6 及以上)已经将 `pytorch_lightning.metrics` 模块迁移到了独立的库 `torchmetrics` 中。因此,如果代码中仍然引用旧的 `pytorch_lightning.metrics.functional.reduction` 路径,则会引发此错误[^1]。 ### 解决方案 1. **安装 `torchmetrics` 库** 由于 `reduction` 功能已迁移至 `torchmetrics`,请确保安装该库以替代原来的路径: ```bash pip install torchmetrics ``` 2. **更新导入语句** 如果问题是由过时的导入方式引起的,请将原来的: ```python from pytorch_lightning.metrics.functional.reduction import ... ``` 替换为: ```python import torchmetrics ``` 或根据具体需求调整为特定的功能调用路径,如: ```python from torchmetrics.functional import accuracy ``` 3. **检查 PyTorch Lightning 版本** 确保当前安装的 PyTorch Lightning 版本代码兼容。可以通过以下命令查看版本并升级到最新稳定版: ```bash pip show pytorch_lightning pip install --upgrade pytorch_lightning ``` 4. **清理环境和重新安装** 如果上述方法无效,可以尝试创建一个干净的虚拟环境,并重新安装所需的依赖项: ```bash python -m venv env source env/bin/activate # Linux/macOS pip install pytorch_lightning torchmetrics ``` 通过上述步骤,应能够解决 `ModuleNotFoundError` 并成功运行 PyTorch Lightning 相关代码。 --- ###
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值