Python报错:
C:\actions-runner\_work\pytorch\pytorch\pytorch\aten\src\ATen\native\cuda\Indexing.cu:1553: block: [110,0,0], thread: [32,0,0] Assertion `srcIndex < srcSelectDimSize` failed.
...
...
RuntimeError: CUDA error: device-side assert triggered
Compile with `TORCH_USE_CUDA_DSA` to enable device-side assertions.
报错原因:
PyTorch 在使用 GPU 索引张量时触发的断言失败,意思是访问了一个张量中不存在的索引位置,造成了越界。
访问的索引 srcIndex 超出了张量在某个维度上的范围 srcSelectDimSize。也就是,比如你有一个张量 tensor.size(0) == 100,你却访问了 tensor[105],就会触发这个错误。
报错发生在这一行:
at_embed_data = self.at_embed(at_data)
而我的定义是:
self.at_embed = nn.Embedding(n_at + 10, d_k)
其中 n_at = 983。也就是说,embedding 的合法索引范围是 0 到 992(共 993 个 index)。
而 at_data 的 shape 是tensor (64, 500),说明你输入了一个索引矩阵,有 64 条样本,每条 500 个 at_id。
❗问题本质:
你的 at_data 中有某些值 ≥ 993(也可能是负数),超过了 embedding 的最大索引范围。
所以对于 at 而言还是需要重新编码,不能用原始值!!!
8328

被折叠的 条评论
为什么被折叠?



