首页 > 解决方案 > 类型错误:__init__() 缺少 1 个必需的位置参数:'args'

问题描述

模型.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'

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()?

提前非常感谢你!!!!

标签: pythonparameter-passing

解决方案


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

def __init__(self, args):

所以,然后你试图实例化BaseModel对象,你需要将 传递args给构造函数。

bm = BasicModel(args)

在哪里args = #your defined arguments


推荐阅读