目录

Pytorch报错问题解决AttributeError-nn.Sequential-object-has-no-attribute-append

[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'

本人环境如下:

环境版本
CUDA11.1
Python3.9
Pytorch1.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:

https://i-blog.csdnimg.cn/direct/900a44d0532e41abad650beee0f08ce5.png

注释掉原先 Sequential 的代码:

https://i-blog.csdnimg.cn/direct/d40696d9bd294766b42c6a7be9bde58d.png

进入Pytorch的Github官网,找到 Sequential 带有append方法的版本源码:

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

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

打开源码网站链接后,把带有append方法的新 Sequential 代码复制,粘贴到你自己本地注释掉的 Sequential 代码位置下进行运行,问题解决。

https://i-blog.csdnimg.cn/direct/7e631b158c26473fa525ead3e868b5f0.jpeg

https://i-blog.csdnimg.cn/direct/5ad6cac34d3d42109dc7851fdee7e579.png