首页 > 解决方案 > RuntimeError: CUDAType 不支持 _th_exp_out 长

问题描述

问题和帮助

我正在尝试微调变压器模型以进行问答,并且正在使用 BCEWithLogitsLoss 函数。但是,当我尝试计算损失时,我得到了这个错误:

RuntimeError: CUDAType 不支持 _th_exp_out 长

我正在输入形状和 dtype 的矩阵,[16, 2]Long
Bud 遗憾的是我不知道要解决这个问题。我尝试使用另一种 dtype(int32、float32、double),但没有成功。

这是代码:

def loss_fn(self, preds, labels):
    return torch.nn.BCEWithLogitsLoss()(preds, labels)

def train_fn(self, dataloader, model, optimizer, device):
    # Some other stuff here
    pred = model(
            token_ids = token_ids,
            attention_mask = attention_mask,
            token_type_ids = token_type_ids)
    start_scores = torch.argmax(pred[0], dim=1)
    end_scores = torch.argmax(pred[1], dim=1)
        
    pred = torch.tensor(list(zip(start_scores, end_scores)))
    pred = pred.to(device, dtype=torch.long)

    batch_loss = self.loss_fn(pred, label)

标签: pythonmachine-learningpytorch

解决方案


在我的情况下,将 pred 和 label 都传递为 float 有效。


推荐阅读