[Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘

问题

运行深度学习代码的时候遇到了以下报错问题:

Traceback (most recent call last):
  File "/home/anaconda3/envs/Text2HOI/lib/python3.9/site-packages/torch/autograd/grad_mode.py", line 28, in decorate_context
    return func(*args, **kwargs)
  File "/media/Projects/Text2HOI/demo/demo.py", line 72, in main
    seq_cvae = build_seq_cvae(config, test=True)
  File "/media/Projects/Text2HOI/lib/utils/model_utils.py", line 75, in build_seq_cvae
    seq_cvae = SeqCVAE(**args_cvae)
  File "/media/Projects/Text2HOI/lib/networks/cvae.py", line 37, in __init__
    self.encoder = Encoder(
  File "/media/Projects/Text2HOI/lib/networks/cvae.py", line 120, in __init__
    self.MLP.append(nn.Linear(in_dim, out_dim))
  File "/home/anaconda3/envs/Text2HOI/lib/python3.9/site-packages/torch/nn/modules/module.py", line 1177, in __getattr__
    raise AttributeError("'{}' object has no attribute '{}'".format(
    
AttributeError: 'Sequential' object has no attribute 'append'

本人环境如下:

环境 版本
CUDA 11.1
Python 3.9
Pytorch 1.10.1

之所以会报错AttributeError: 'Sequential' object has no attribute 'append',是因为Pytorch在1.10.1版本中并没有给Sequential类加入append()方法,至少是在1.11.0版本中加入的,故我们这个Pytorch版本没法调用该方法。

Pytorch 1.11.0版本需要CUDA版本升级,但我CUDA环境也不好变动,服务器上其他人的环境都是依赖于这个CUDA版本的,故我们只能自己动手修改代码。

解决方法

打开定义Sequential的代码所在位置:anaconda3/envs/Text2HOI/lib/python3.9/site-packages/torch/nn/modules/container.py:
[Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘_第1张图片
注释掉原先Sequential的代码:
[Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘_第2张图片
进入Pytorch的Github官网,找到Sequential带有append方法的版本源码:

https://github.com/pytorch/pytorch/blob/v1.13.0/torch/nn/modules/container.py#L29

这里的v1.13.0可以根据你自己需要的版本更换,只要是v1.11.0以后的都带有 append 方法。

但是要注意一点的是,太新的Pytorch版本也有问题,以Pytoch v2.5.0为例,里面的Sequential代码用到了Python 11的新特性 Self,如果你贸然用最新版本的Pytorch,那你的Python环境可能也要进行相应更新。

打开源码网站链接后,把带有append方法的新Sequential代码复制,粘贴到你自己本地注释掉的Sequential代码位置下进行运行,问题解决。
[Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘_第3张图片
[Pytorch报错问题解决]AttributeError: ‘nn.Sequential‘ object has no attribute ‘append‘_第4张图片

你可能感兴趣的:(编程报错解决,pytorch,人工智能,python)