You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PyTorch自定义NeuralNet调用super()后仍报属性错误问题咨询

问题根因

报错核心是实例化NeuralNet时nn.Module的父类初始化逻辑没正常执行,和你写的super().__init__()代码本身无关,是Jupyter环境跨ipynb导入的常见坑,一般是以下两种情况导致:

  • model.ipynb的单元格存储顺序错乱。你在notebook里写代码时可能先建了写NeuralNet类的单元格,后面才建写import torch.nn as nn的单元格,notebook保存文件时是按单元格创建顺序存的,不是按你手动运行的顺序。用ipynb.fs.full导入时会严格按照文件内存储的单元格顺序从上到下执行,跑到类里的nn.Linear赋值逻辑时,要么nn还没被导入,要么类的初始化上下文异常,导致父类初始化没生效。
  • Jupyter内核缓存了旧版本的类。你之前写NeuralNet类的时候一开始没加super().__init__(),后来补上了代码但没重新运行类定义的单元格,也没重启train文件的内核,导入时加载的还是内存里存的旧版类,旧版类根本没调用父类初始化方法,给类赋值nn层的时候就会触发这个属性错误。
修复步骤
  • 先整理model.ipynb结构:把import torch、import torch.nn as nn这类导入语句全部放到notebook最顶部的第一个单元格,后面再放NeuralNet类的定义。你现在贴的类代码缺了forward前向传播方法,记得补上,不然后续训练跑不通。整理完之后重启model.ipynb的内核,从上到下逐格运行所有单元格,确认直接在model.ipynb里实例化NeuralNet不会报错。
    补全后的NeuralNet参考代码:
    import torch
    import torch.nn as nn
    
    class NeuralNet(nn.Module):
        def __init__(self, input_size, hidden_size, num_classes):
            super().__init__()
            self.l1 = nn.Linear(input_size, hidden_size) 
            self.l2 = nn.Linear(hidden_size, hidden_size) 
            self.l3 = nn.Linear(hidden_size, num_classes)
            self.relu = nn.ReLU()
        
        def forward(self, x):
            out = self.l1(x)
            out = self.relu(out)
            out = self.l2(out)
            out = self.relu(out)
            out = self.l3(out)
            return out
    
  • 切回train.ipynb,直接重启整个内核清空所有缓存变量,把所有导入语句放到notebook顶部再逐格运行。初学阶段不建议把代码拆到多个ipynb文件里导入,跨ipynb导入的缓存、顺序问题非常多,直接把NeuralNet类复制到train.ipynb里先把训练逻辑跑通,后续功能稳定了再拆成独立的.py文件就行。
  • 额外提醒:你现在写的ChatDataset类缺了__getitem__和__len__方法,后续跑DataLoader会报错,记得补上,参考写法:
    class ChatDataset(Dataset):
        def __init__(self):
            self.n_samples = len(x_train)
            self.x_data = x_train
            self.y_data = y_train
        
        def __getitem__(self, index):
            return self.x_data[index], self.y_data[index]
        
        def __len__(self):
            return self.n_samples
    

内容的提问来源于stack exchange,提问作者Grace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 19:09:20