SRGAN训练报错:TypeError: _named_members()获意外参数'remove_duplicate'
SRGAN训练中
TypeError: _named_members() got an unexpected keyword argument 'remove_duplicate'解决办法 问题分析
该错误由PyTorch与TensorLayerX版本不兼容导致:PyTorch的_named_members()方法在不同版本的参数定义存在差异,旧版本PyTorch未提供remove_duplicate参数,但当前使用的TensorLayerX版本在调用named_parameters()时内部传递了该参数,从而触发类型错误。
解决方案
1. 版本适配(推荐方案)
查看TensorLayerX官方兼容文档,安装与当前PyTorch版本匹配的TensorLayerX版本:
- 若PyTorch版本较低(如1.10及以下),降级TensorLayerX到对应兼容版本;
- 若使用较新的TensorLayerX,升级PyTorch到支持
remove_duplicate参数的版本(PyTorch 1.11+已支持该参数)。
2. 修改TensorLayerX源码(临时修复)
找到Python环境中TensorLayerX的core_torch.py文件(示例路径:D:\E\anaconda\envs\opencv-env2\lib\site-packages\tensorlayerx\nn\core\core_torch.py),定位到all_weights属性的代码块:
@property def all_weights(self): """Return all weights of the network.""" weights = [] for name, param in self.named_parameters(recurse=True): weights.append(param) return weights
检查named_parameters()调用是否传递了remove_duplicate参数,若有则删除该参数;若未传递,说明PyTorch版本过低,直接升级PyTorch即可。
3. 验证权重加载逻辑
确认VGG预训练权重的维度与模型结构完全匹配,避免因权重不匹配触发后续参数遍历问题。
内容的提问来源于stack exchange,提问作者krishna veer
相关产品推荐
相关产品推荐

