繁体   English   中英

在 PyTorch 中,将张量的一部分切片到另一个张量的最快方法是什么?

[英]What's the fastest way to slice a portion of a tensor to another in PyTorch?

我有三个张量,如下所示:

a = tensor([[5, 2, 3, 24],
        [8, 66, 7, 89],
        [9, 10, 1, 12]])

b = tensor([[10, 22, 13, 1],
            [35, 6, 17, 3],
            [11, 13, 5,8]])

c = tensor([[0, 0, 0, 0],
                [0, 0, 0, 0],
                [0, 0, 0,0]])

我想使用此公式更改 c 值:请注意,此时 c 中的最后一个值(列)不会更改。

c[:,:-1]= a[:,:-1] -a[:, 1:] - b[:, 1:] 

这意味着我将拥有

c = tensor([[5-2-22, 2-3-13, 3-24-1, 0],
            [8-66-6, 66-7-17, 7-89-3, 0],
            [9-10-13, 10-1-5, 1-12-8,0]])

>>>  c = tensor([[-19, -14, -22, 0],
                 [-64, 42, -85, 0],
                 [-14, 4, -19,0]])

最后,要更改最后一列,我想使用c[:, -1] = b[:, -1] - 1

我的最终张量将如下所示:

c = tensor([[-19, -14, -22, 0],
            [-64, 42, -85, 2],
            [-14, 4, -19,7]])

我认为您“覆盖” c的元素这一事实正在导致您出错。 尝试通过连接两个部分来“从头开始”创建c

c = torch.cat([a[:,:-1] -a[:, 1:] - b[:, 1:], 
               b[:, -1:] - 1], dim=-1)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM