__init__() 得到了意外的关键字参数 'chi1'

__init__() got an unexpected keyword argument 'chi1'

我是 python 的新人。我正在尝试将参数导入我的 class "inverse_model" 。我调用一个函数“get_models”来做到这一点。但它给了我错误“init() 得到了一个意外的关键字参数 'zz':

感谢帮助。请看下面的代码:

    def get_models(args):
    
    
    zz=torch.tensor(args.chi_Initialize)
    inverse_net = inverse_model(in_channels=len(args.chi),zz=zz,resolution_ratio=args.resolution_ratio,nonlinearity=args.nonlinearity)
    
    return inverse_net


class inverse_model(nn.Module):
    def __init__(self, in_channels,zz,resolution_ratio=6,nonlinearity="tanh"):
        super(inverse_model, self).__init__()
        self.in_channels = in_channels
        self.zz=zz
        self.resolution_ratio = resolution_ratio #vertical scale mismtach between seismic and EI
        self.activation =  nn.ReLU() if nonlinearity=="relu" else nn.Tanh() 

默认参数后,python不允许有非默认参数。

将您的构造函数修改为

def __init__(self, in_channels,
                 chi1,chi2,chi3,chi4,chi5,chi6,chi7,chi8,chi9,
                 chi10,chi11,chi12, resolution_ratio=6,nonlinearity="tanh"):

更新答案:修订版 1(更新问题)

import torch
from torch import nn


class inverse_model(nn.Module):
    def __init__(self, in_channels, zz, resolution_ratio=6, nonlinearity="tanh"):
        super(inverse_model, self).__init__()
        self.in_channels = in_channels
        self.zz = zz
        self.resolution_ratio = resolution_ratio  # vertical scale mismtach between seismic and EI
        self.activation = nn.ReLU() if nonlinearity == "relu" else nn.Tanh()

def get_models(args):
    zz = torch.tensor(args.chi_Initialize)
    inverse_net = inverse_model(in_channels=len(args.chi), zz=zz, resolution_ratio=args.resolution_ratio,
                                nonlinearity=args.nonlinearity)

    return inverse_net

它 returns exit 0 作为状态。