__init__() takes from 1 to 2 positional arguments but 3 were given

调用EntropyMaximization类计算loss时报错,class定义如下

class EntropyMaximization(torch.nn.Module):
    """Entropy Maximization loss

    Arguments:
        t : temperature
    """

    def __init__(self, t=1.):
        super(EntropyMaximization, self).__init__()
        self.t = t

    def forward(self, lbl, pred):
        """Compute loss.

        Arguments:
            lbl (torch.tensor:float): predictions, not confidence, not label.
            pred (torch.tensor:float): predictions.

        Returns:
            loss (torch.tensor:float): entropy maximization loss

        """
        loss = torch.mean(torch.sum(F.softmax(lbl/self.t, dim=-1) * F.log_softmax(pred/self.t, dim=-1), dim=-1))
        return loss

错误代码:

Lf = EntropyMaximization(logits_leaf, logits_leaf)

正确代码:

loss_enm = EntropyMaximization()
Lf = loss_enm(logits_leaf, logits_leaf)

通常在使用 PyTorch 中的自定义模型或损失函数时,你需要先实例化类,然后才能调用其中的方法,比如 forward 方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值