python - Torchvision 的 CUDA 错误设备端断言错误
问题描述
我遇到了 Pytorch 和 CUDA 的问题,这似乎很常见,在使用 CUDA 构建神经网络时出现“RuntimeError:CUDA 错误:设备端断言已触发”,因为模型的输出与用于计算的标签不兼容失利。我认为这是因为模型的输出大小为 [n, 1] 而不是 [n] ,其中 n 是批量大小。
使用我自己的架构,我可以通过在前向传递函数中使用 .squeeze() 来解决此问题,以使输出大小为 [n]。现在我正在使用来自 torchvision 的预训练 ResNet 模型,但我无法实现同样的目标。我尝试为最后一层定义自己的模块,但没有奏效:
class final_layers(nn.Module):
def __init__(self):
super(final_layers, self).__init__()
self.layers = nn.Sequential(
nn.Linear(512, 1),
nn.Sigmoid()
)
def forward(self, x):
x = self.layers(x)
return x.squeeze()
model = models.resnet18(pretrained=True)
model.fc = final_layers()
optimizer = Adam(model.parameters(), lr=0.0003)
criterion = BCELoss()
if torch.cuda.is_available():
model = model.cuda()
criterion = criterion.cuda()
该模型在带有 CPU 的 Colab 中运行良好,但在使用 GPU 时出现以下错误:
RuntimeError: CUDA error: device-side assert triggered
任何帮助将不胜感激 :)
解决方案
推荐阅读
- javascript - 创建具有多个元素的样式化组件
- git - 从 Bitbucket 克隆 Databricks 笔记本
- azure-devops - 总是:Azure DevOps 管道中的真实行为问题
- ssh - 我在 Oracle Cloud 中运行的网站出现故障,我该如何修复?
- node.js - k8s 中的 nodejs Web 应用程序出现 OOM
- android - 您的应用是否在面向 Android 9 (Pie) 或更早版本(SDK 级别 28 或更低)的 APK 或 app bundle 中访问后台位置?
- c# - 为什么自动实现的列表属性充当 C# 中所有实例的共享属性?
- android - 初始化 ADB 时出错:无法创建调试桥:无法启动 ADB 服务器
- flutter - 如何使容器在他的圆角之外变得透明?
- python - 在 Seaborn histplot 子图中自定义图例