gpt4 book ai didi

python - pytorch 中的张量切片导致 torch 分配未到位

转载 作者:行者123 更新时间:2023-12-02 02:56:48 24 4
gpt4 key购买 nike

我正在尝试将当前的代码(将张量分配到位)转换为外部操作。
目前的意思是代码是

self.X[:, nc:] = D

其中 D 的形状与 self.X[:, nc:]
但我想将其转换为

sliced_index = ~ somehow create an indexed tensor from self.X[:, nc:]
self.X = self.X.scatter(1,sliced_index,mm(S_, Z[:, :n - nc]))

并且不知道如何创建仅代表切片张量中的条目的索引掩码张量

最小示例:

a = [[0,1,2],[3,4,5]]
D = [[6],[7]]
Not_in_place = [[0,1,6],[3,4,7]]

最佳答案

蒙版分散要容易一些。掩码本身可以作为就地操作进行计算,之后您可以使用 masked_scatter

mask = torch.zeros(self.X.shape, device=self.X.device, dtype=torch.bool)
mask[:, nc:] = True
self.X = self.X.masked_scatter(mask, D)

一个更专业的版本,它依赖于广播,但应该更高效

mask = torch.zeros([1, self.X.size(1)], device=self.X.device, dtype=torch.bool)
mask[0, nc:] = True
self.X = self.X.masked_scatter(mask, D)

关于python - pytorch 中的张量切片导致 torch 分配未到位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60927234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com