调用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 方法