__init_;()获得意外的关键字参数“chi1”

2024-06-07 00:16:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python新手。我正在尝试将参数导入到我的类“逆_模型””。我调用一个函数“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() 

Tags: inself参数getmodelinitmodelsargs
1条回答
网友
1楼 · 发布于 2024-06-07 00:16:18

在默认参数之后,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

它返回exit 0作为状态

相关问题 更多 >