dag*_*sky 4 python-3.x deep-learning pytorch
/pytorch/aten/src/ATen/native/cuda/Loss.cu:102:operator():块:[18,0,0],线程:[54,0,0] 断言input_val >= zero && input_val <= one
失败。
/pytorch/aten/src/ATen/native/cuda/Loss.cu:102:operator():块:[18,0,0],线程:[55,0,0] 断言input_val >= zero && input_val <= one
失败。
/pytorch/aten/src/ATen/native/cuda/Loss.cu:102:operator():块:[18,0,0],线程:[56,0,0] 断言input_val >= zero && input_val <= one
失败。
/pytorch/aten/src/ATen/native/cuda/Loss.cu:102:operator():块:[18,0,0],线程:[57,0,0] 断言input_val >= zero && input_val <= one
失败。
/pytorch/aten/src/ATen/native/cuda/Loss.cu:102:operator():块:[18,0,0],线程:[58,0,0] 断言input_val >= zero && input_val <= one
失败。
/pytorch/aten/src/ATen/native/cuda/Loss.cu:102:operator():块:[18,0,0],线程:[59,0,0] 断言input_val >= zero && input_val <= one
失败。
回溯(最近一次调用最后一次):
文件“run_toys.py”,第 215 行,
损失 = criteria(torch.reshape(out, [-1, dataset.out_dim]), torch.reshape(target, [-1, dataset .out_dim]))
文件“/usr/local/python3/lib/python3.6/site-packages/torch/nn/modules/module.py”,第 727 行,在 _call_impl
结果 = self.forward(*input, * *kwargs)
文件“/usr/local/python3/lib/python3.6/site-packages/torch/nn/modules/loss.py”,第530行,前向
返回F.binary_cross_entropy(输入,目标,权重= self .weight,reduction=self.reduction)文件“/usr/local/python3/lib/python3.6/site-packages/torch/nn/function.py”,第2526行,在
binary_cross_entropy
输入,目标,权重,reduction_enum中)
RuntimeError:CUDA 错误:设备端断言已触发
代码
criterion = nn.CrossEntropyLoss()
loss = criterion(torch.reshape(out, [-1, dataset.out_dim]), torch.reshape(target, [-1, dataset.out_dim]))
loss = torch.mean(loss)
Run Code Online (Sandbox Code Playgroud)
目标和输出的形状相同 # torch.Size([640, 32])
该模型在我的 CPU 上运行正常,但在 GPU 上运行是问题
小智 7
错误的原因可能有两个:
input_val
不在范围 [0; 之间 1]。因此,您应该确保模型输出在该范围内。您可以使用torch.clamp()
pytorch。在计算损失之前添加以下行: out = out.clamp(0, 1)
Run Code Online (Sandbox Code Playgroud)
nan
也会触发断言的值。为了防止这种情况,您可以在计算损失之前再次使用以下技巧: out[out!=out] = 0 # or 1 depending on your model's need
Run Code Online (Sandbox Code Playgroud)
这里的技巧是使用nan!=nan
属性,我们应该将它们更改为一些有效的数字。
归档时间: |
|
查看次数: |
8147 次 |
最近记录: |