python - 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)
解决方案
在我的情况下,将 pred 和 label 都传递为 float 有效。
推荐阅读
- python - android中的python套接字无法连接到在virtualbox中运行的python服务器
- elasticsearch - 过滤热门点击聚合未按预期工作
- javascript - mac Safari 上的 SpeechRecognition 事件监听器
- php - Apache 不发布 ram
- sql - Oracle DB 上的 Apache Drill Timestampdiff
- python - 如何为 Python 多处理中的每个 API 调用创建唯一进程 ID 以更好地记录日志
- python - 从 Python 中的文本文件中提取主机名和日期时间
- linux - Ubuntu 或任何 Linux 操作系统是否仅为系统任务(例如显示桌面主屏幕和移动鼠标指针)保留一些 RAM?
- c# - 根据类型显示日志消息
- reactjs - Next JS 应用程序在 localhost 上请求位置权限,但在部署到 Heroku、Vercel 或 Digital Ocean 时不会