PyTorch继承nn.Module的类实例化时出现意外关键字参数错误
解决PyTorch Module实例化时"unexpected keyword argument"报错问题
问题根源
你定义继承自torch.nn.Module的类时,错误地将构造函数写成了__int__(这是Python中用于对象转整数的特殊方法),而非正确的初始化方法__init__。
当你实例化类时,Python会调用父类torch.nn.Module的默认无参__init__方法,此时你传入的in_size参数会被判定为意外的关键字参数,从而触发__init__() got an unexpected keyword argument 'in_size'错误。
修正代码示例
错误写法:
import torch.nn as nn class MyNN(nn.Module): def __int__(self, in_size): # 错误:应为__init__ super().__int__() self.fc = nn.Linear(in_size, 10)
正确写法:
import torch.nn as nn class MyNN(nn.Module): def __init__(self, in_size): # 正确的初始化方法 super().__init__() # 调用父类的初始化逻辑 self.fc = nn.Linear(in_size, 10) # 正常实例化 model = MyNN(in_size=20)
补充说明
__int__方法的作用是当调用int(obj)时返回对象对应的整数值,和类的初始化毫无关系。只有定义__init__方法,才能在实例化类时接收并处理自定义参数,同时必须通过super().__init__()调用父类nn.Module的初始化逻辑,保证模块正常工作。
内容的提问来源于stack exchange,提问作者rabgc
相关产品推荐
相关产品推荐

