pytorch 常见bug

1. RuntimeError: reduce failed to synchronize: cudaErrorAssert: device-side assert triggered

当使用NLLLoss或CrossEntropyLoss时,并且当您的数据集具有负标签(或标签数量大于类数)时,通常会发生这种错误。这也是您使断言t >= 0 && t < n_classes失败的确切错误。

对于MSELoss不会发生这种情况,但是OP提到某个地方有一个CrossEntropyLoss,因此会发生错误(程序在另一行异步崩溃)。解决方案是清理数据集并确保满足t >= 0 && t < n_classes(其中t表示标签)。

另外,如果您使用NLLLoss或BCELoss(然后分别需要softmax或sigmoid激活),请确保网络输出在0到1的范围内。请注意,对于CrossEntropyLoss或BCEWithLogitsLoss,这不是必需的,因为它们在loss函数内部实现了激活函数。

你可能感兴趣的:(pytorch 常见bug)