类型错误:__init__() 缺少 1 个必需的位置参数:'args'

时间:2021-07-21 18:30:53

标签: python parameter-passing

model.py

import os

import torch
import torch.nn as nn
import torch.nn.functional as F

import backbones
import decoders

class BasicModel(nn.Module):
def __init__(self, args):
    nn.Module.__init__(self)

    self.backbone = getattr(backbones, args['backbone'])(**args.get('backbone_args', {}))
    self.decoder = getattr(decoders, args['decoder'])(**args.get('decoder_args', {}))

def forward(self, data, *args, **kwargs):
    return self.decoder(self.backbone(data), *args, **kwargs)

以防万一,

在主干中,有“mobilenetv3.py”、“resnet.py”。

在解码器中,有'balance_cross_entropy_loss.py'、'dice_loss.py'、'l1_loss.py'、'pss_loss.py'、'seg_detector_loss.py'、'seg_detector.py'、'simple_detection.py'< /p>

cvs.py

import torch
from torch import nn
from model import BasicModel

bm = BasicModel()
...
...

我正在尝试执行其他任务,但我必须先实例化模型。 但是我有这个错误..

Traceback (most recent call last):
File "cvs.py", line 7, in <module>
bm = BasicModel()
TypeError: __init__() missing 1 required positional argument: 'args'

我应该向 BasicModel() 传递什么参数?

在此先感谢您!!!!

1 个答案:

答案 0 :(得分:0)

您已声明要在 init 方法中传递 args

def __init__(self, args):

因此,如果您尝试实例化 BaseModel 对象,则需要将 args 传递给构造函数。

bm = BasicModel(args)

哪里args = #your defined arguments