AttributeError:“TokenClassifierOutput”对象没有属性“detach”

问题描述 投票:0回答:2

您能否帮我解决以下错误:“TokenClassifierOutput”对象没有属性“detach”即使修改诸如output = model(input_ids,token_type_ids = None,attention_mask = input_mask,)之类的代码,错误仍然存在 logits = output.loss.detach().cpu().numpy()

AttributeError                            Traceback (most recent call last)
<ipython-input-49-3e5217186317> in <module>
     13         logits = model(input_ids, token_type_ids=None, attention_mask=input_mask,)
     14 
---> 15     logits = logits.detach().cpu().numpy()
     16     logits = [list(p) for p in np.argmax(logits, axis=2)]
     17 

AttributeError: 'TokenClassifierOutput' object has no attribute 'detach'
model.eval()

y_true = []
y_pred = []
eval_loss, eval_accuracy = 0, 0
nb_eval_steps, nb_eval_examples = 0, 0

for batch in valid_dataloader:
    batch = tuple(t.to(device) for t in batch)
    input_ids, input_mask, label_ids = batch

    with torch.no_grad():
        logits = model(input_ids, token_type_ids=None, attention_mask=input_mask,)

    logits = logits.detach().cpu().numpy()
    logits = [list(p) for p in np.argmax(logits, axis=2)]
    
    label_ids = label_ids.to('cpu').numpy()
    input_mask = input_mask.to('cpu').numpy()
    
nlp bert-language-model named-entity-recognition detach
2个回答
0
投票

在第13行中,

logits
函数返回的变量
model()
似乎是名为
TokenClassifierOutput
的python类的实例。 您可以在第 13 行后添加
print(logits.__dict__)
来了解此实例内部的内容。 无论如何,如果您运行
logits.detach()
方法,
logits
应该是 pytorch.Tensor 对象的实例。


0
投票

logits = logits.logits.detach().cpu().numpy()

有效

© www.soinside.com 2019 - 2024. All rights reserved.