程序在 上突然退出,错误代码为 -1073741571
在 中运行深度学习训练时,程序可能会突然结束,退出代码为 -1073741571。此错误表明程序遇到了未处理的异常。
原因分析
经过仔细检查源代码,发现问题出在以下代码块中:
for j in range(images.size(0)): loss_list[index[j]] = loss[j]
登录后复制
在这里,loss_list 被初始化为一个存储浮点数的 pytorch 张量。然而,loss 是一个张量,其中包含训练批次中每个样本的损失值。因此,将张量分配给浮点数会导致问题。
解决方案
将 loss_list 初始化为 numpy 数组,而不是 pytorch 张量,可以解决此问题:
loss_list = np.zeros(len(dataloader.dataset))
登录后复制
这样,loss_list 就可以存储浮点数,并且可以正确地保存每个样本的损失值。
其他改进
此外,如果不需要为收集的损失计算梯度,可以进一步改进代码,如下所示:
for j in range(batch_size): loss_list[index[j]] = loss[j].item()
登录后复制
这将从张量中提取原始浮点数,从而避免不必要的内存消耗和梯度计算。
以上就是深度学习训练时程序突然退出,错误代码为 -1073741571,怎么解决?的详细内容,更多请关注php中文网其它相关文章!