当前位置: 首页 > article >正文

【Pytorch报错】AttributeError: cannot assign module before Module.__init__() call

代码:

import torch.nn as nn

class Model(nn.Module):
    def __init__(self, input_dim, output_dim):
        self.linear = nn.Linear(input_dim, output_dim) 
        
    def forward(self, x):
        out = self.linear(x)
        return out

model = Model(1, 1)

报错:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[20], line 11
      8         out = self.linear(x)
      9         return out
---> 11 model = Model(1, 1)

Cell In[20], line 5, in Model.__init__(self, input_dim, output_dim)
      4 def __init__(self, input_dim, output_dim):
----> 5     self.linear = nn.Linear(input_dim, output_dim)

File C:\PyCode\venv_ai\lib\site-packages\torch\nn\modules\module.py:1214, in Module.__setattr__(self, name, value)
   1212 if isinstance(value, Module):
   1213     if modules is None:
-> 1214         raise AttributeError(
   1215             "cannot assign module before Module.__init__() call")
   1216     remove_from(self.__dict__, self._parameters, self._buffers, self._non_persistent_buffers_set)
   1217     modules[name] = value

AttributeError: cannot assign module before Module.__init__() call

原因:
这个错误信息表明在Model类的构造函数中,你试图在调用父类nn.Module的构造函数之前就赋值一个模块(nn.Linear)。在PyTorch中,你应该首先调用父类的构造函数,然后再定义子类的属性。

修改:

import torch.nn as nn

class Model(nn.Module):
    def __init__(self, input_dim, output_dim):
        super().__init__()  # 调用父类的构造函数
        self.linear = nn.Linear(input_dim, output_dim)  # 然后定义子类的属性
        
    def forward(self, x):
        out = self.linear(x)
        return out

model = Model(1, 1)

http://www.kler.cn/a/472117.html

相关文章:

  • 生成模型:变分自编码器-VAE
  • 用JAVA编写一个简单的小游戏
  • 28、使用StreamPark管理作业中,关于默认环境变量设置和默认动态参数设置的修改
  • 大数据架构设计:数据分层治理的全景指南
  • 嵌入式技术之Linux(Ubuntu) 一
  • SQL从入门到实战
  • Powerbi官方认证!2025年入行数据分析
  • docker学习使用
  • Spring 设计模式:经典设计模式
  • 聊天机器人Rasa面试内容整理-如何选择合适的分词器和分类器?
  • 博奥龙Nanoantibody系列IP专用抗体
  • element-ui 实现输入框下拉树组件功能
  • 【文本分类】bert二分类
  • Go语言的 的多态性(Polymorphism)核心知识
  • 【Golang 面试题】每日 3 题(二十三)
  • Python----Python基础(列表 list,切片,多维列表,相关函数,排序,元素的增加,元素的删除,元素的修改,元素的查找,列表的拷贝)
  • 【Oceanbase数据库常用巡检SQL】
  • 【Docker项目实战】使用Docker部署gallery轻量级图片管理系统
  • SSH 暴力破解攻击的诊断与防御
  • Vue进阶(贰幺叁)node 版本切换
  • 正大策略:如何在多变的市场中找到稳定增长之道
  • 学生信息管理系统的数据库设计MySQL
  • java并发之AQS
  • Ruby语言的学习路线
  • 微软:GPT-4o-mini只有8B,o1-mini仅100B
  • Synthesia技术浅析(五):计算机视觉