如何在pytorch的固定位置插入一个值
pytorch 1243
原文标题 :How to insert a value in a fixed positon of pytorch
我有一个 PyTorch 张量
x = [[1,2,3,4,5]]
现在我想在张量 x 的固定位置添加一个值,例如,我想在位置 3 中添加 11,那么 x 将是
x= [[1,2,3,11,4,5]]
如何在 Pytorch 中执行此操作?
回复
我来回复-
kmario23 评论
PyTorch 不支持将数组沿非单维维度动态扩展到任意大小,例如您提到的那些,主要是因为内存是在张量构造期间预先分配的,并根据数据类型设置为固定大小。增长非单一维度大小的唯一方法是创建一个具有目标形状的新(空/零)张量,并在所需位置插入值,同时复制值。
In [24]: z = torch.zeros(1, 6) In [27]: t Out[27]: tensor([[1, 2, 3, 4, 5]]) In [30]: z[:, :3] = t[:, :3] In [33]: z[:, -2:] = t[:, -2:] In [36]: z[z == 0] = 11 In [37]: z Out[37]: tensor([[ 1., 2., 3., 11., 4., 5.]])
然而,如果你想沿着单维展开张量,那么使用
tensor.expand(new_shape)
很容易实现。在下面的示例中,我们将张量t
沿第 0 维扩展为长度 3,这原本是一个单维。# make a copy for in-place modification since `expand()` returns a view In [64]: t_expd = t.expand(3, -1).clone() In [65]: t_expd Out[65]: tensor([[1, 2, 3, 4, 5], [1, 2, 3, 4, 5], [1, 2, 3, 4, 5]]) # modify 2nd and 3rd rows In [66]: t_expd[1:, ...] = 23 In [67]: t_expd Out[67]: tensor([[ 1, 2, 3, 4, 5], [23, 23, 23, 23, 23], [23, 23, 23, 23, 23]])
2年前