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

HybridTableMaskedLM初始化报错:需1个位置参数却传入2个

问题排查与解决方案

错误原因分析

报错TypeError: HybridTableMaskedLM.__init__() takes 1 positional argument but 2 were given的核心原因有两种可能:

1. 类继承与父类初始化错误

你提供的两个HybridTableMaskedLM定义中,继承nn.Module的版本存在明显错误:

class HybridTableMaskedLM(nn.Module):
    def __init__(self, config):
        super(HybridTableMaskedLM, self).__init__(config)  # 此处错误

nn.Module的__init__方法不接受除self外的位置参数,强行传入config会导致父类初始化逻辑异常,进而触发参数数量错误的报错。

2. 类定义冲突

如果你的Notebook中同时存在两个HybridTableMaskedLM的定义(比如先运行了继承nn.Module的版本,再导入model.py中的版本),Python会优先使用先定义的类,导致实际使用的类与预期不符,引发参数错误。


具体解决步骤

方案一:修正继承nn.Module的类定义

如果需要使用继承nn.Module的版本,修改__init__方法,移除传给父类的config参数,并将config保存为实例属性:

class HybridTableMaskedLM(nn.Module):
    def __init__(self, config):
        super(HybridTableMaskedLM, self).__init__()  # 去掉config参数
        self.config = config  # 保存config供后续模块使用
        self.table = HybridTableModel(config)
        self.cls = TableMLMHead(config)

        self.init_weights()

修改后重新运行类定义代码块,再执行创建模型的代码。

方案二:正确使用model.py中的类

如果要使用继承BertPreTrainedModel的版本(该版本的父类初始化逻辑是正确的),需确保正确导入且无类定义冲突:

  1. 先删除Notebook中所有自定义的HybridTableMaskedLM类定义代码块,或重新启动Colab运行时清除旧定义。
  2. 正确导入model.py中的类:
from model import HybridTableMaskedLM
  1. 若修改过model.py文件,需重新加载模块以确保使用最新版本:
import importlib
import model
importlib.reload(model)
from model import HybridTableMaskedLM

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:55:57