如何将张量插入到 pytorch 中的另一个张量中

Tong

我有 pytorch Tensor 的 shape (batch_size, step, vec_size),例如, a Tensor(32, 64, 128),我们称之为 A 。

我有另一个Tensor(batch_size, vec_size),例如Tensor(32, 128),我们称其为 B。

我想将 B 插入到 A 轴 1 的某个位置。插入位置在Tensor(batch_size)名为 P 的a 中给出

我知道 pytorch 中没有空张量(如空列表),因此,我将 A 初始化为零,并在 A 轴 1 的某个位置添加 B。

A = Variable(torch.zeros(batch_size, step, vec_size))

我正在做的是:

for i in range(batch_size):
    pos = P[i]
    A[i][pos] = A[i][pos] + B[i]

但我收到一个错误:

RuntimeError: one of the variables needed for gradient computation has been modified by an inplace operation

然后,我在循环中对每个 A 进行克隆:

for i in range(batch_size):
    A_clone =  A.clone()
    pos = P[i]
    A_clone[i][pos] = A_clone[i][pos] + B[i]

这对于 autograd 来说非常慢,我想知道是否有更好的解决方案?谢谢你。

乌曼古普塔

您可以使用掩码代替克隆。

看下面的代码

# setup
batch, step, vec_size = 64, 10, 128 
A = torch.rand((batch, step, vec_size))
B = torch.rand((batch, vec_size))
pos = torch.randint(10, (64,)).long()

# computations
# create a mask where pos is 0 if it is to be replaced
mask = torch.ones( (batch, step)).view(batch,step,1).float()
mask[torch.arange(batch), pos]=0

# expand B to have same dimension as A and compute the result
result = A*mask + B.unsqueeze(dim=1).expand([-1, step, -1])*(1-mask)

这样您也可以避免使用 for 循环和克隆。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将索引选定的张量添加到另一个在pytorch中具有重叠索引的张量

来自分类Dev

Pytorch-将张量的每一行投影到另一个张量的列空间

来自分类Dev

如何将Numba用于Pytorch张量?

来自分类Dev

如何将Pytorch张量中的元素映射到ID?

来自分类Dev

在张量流中查找值张量到另一个张量的索引

来自分类Dev

如何在PyTorch中减小张量的最后一个维?

来自分类Dev

如何将张量推到TensorFlow队列并将其从另一个进程中拉出?

来自分类Dev

如何将pytorch张量列表分离为数组

来自分类Dev

计算张量中每个元素相对于另一个张量的最小距离

来自分类Dev

使用张量流中的另一个索引列表访问张量的元素

来自分类Dev

是否有一个PyTorch张量函数可以减少规则模式中的尺寸

来自分类Dev

在 PyTorch/Numpy 中,如何将矩阵的行与 3-D 张量中的“矩阵”相乘?

来自分类Dev

如何展开PyTorch张量?

来自分类Dev

pytorch,如何扩展张量

来自分类Dev

如何将行插入到另一个工作表的列中?

来自分类Dev

如何将函数输出插入到另一个函数的数组中

来自分类Dev

如何匹配两个pytorch张量中的项目

来自分类Dev

如何理解在PyTorch中创建叶张量?

来自分类Dev

如何在pytorch中动态索引张量?

来自分类Dev

如何在 PyTorch 中获取张量的值?

来自分类Dev

pytorch中的张量变换?

来自分类Dev

PyTorch中的左移位张量

来自分类Dev

在pytorch张量中过滤行

来自分类Dev

在Tensorflow 2.0中用另一个张量索引张量的第k个维度

来自分类Dev

TensorFlow:使用张量索引另一个张量

来自分类Dev

从另一个张量创建特定张量

来自分类Dev

用另一个张量索引张量

来自分类Dev

根据TensorFlow概率中的另一个随机变量从张量中选择一个法线

来自分类Dev

如何将编号从X到Y的行插入到Z行之后的另一个文件中?

Related 相关文章

  1. 1

    将索引选定的张量添加到另一个在pytorch中具有重叠索引的张量

  2. 2

    Pytorch-将张量的每一行投影到另一个张量的列空间

  3. 3

    如何将Numba用于Pytorch张量?

  4. 4

    如何将Pytorch张量中的元素映射到ID?

  5. 5

    在张量流中查找值张量到另一个张量的索引

  6. 6

    如何在PyTorch中减小张量的最后一个维?

  7. 7

    如何将张量推到TensorFlow队列并将其从另一个进程中拉出?

  8. 8

    如何将pytorch张量列表分离为数组

  9. 9

    计算张量中每个元素相对于另一个张量的最小距离

  10. 10

    使用张量流中的另一个索引列表访问张量的元素

  11. 11

    是否有一个PyTorch张量函数可以减少规则模式中的尺寸

  12. 12

    在 PyTorch/Numpy 中,如何将矩阵的行与 3-D 张量中的“矩阵”相乘?

  13. 13

    如何展开PyTorch张量?

  14. 14

    pytorch,如何扩展张量

  15. 15

    如何将行插入到另一个工作表的列中?

  16. 16

    如何将函数输出插入到另一个函数的数组中

  17. 17

    如何匹配两个pytorch张量中的项目

  18. 18

    如何理解在PyTorch中创建叶张量?

  19. 19

    如何在pytorch中动态索引张量?

  20. 20

    如何在 PyTorch 中获取张量的值?

  21. 21

    pytorch中的张量变换?

  22. 22

    PyTorch中的左移位张量

  23. 23

    在pytorch张量中过滤行

  24. 24

    在Tensorflow 2.0中用另一个张量索引张量的第k个维度

  25. 25

    TensorFlow:使用张量索引另一个张量

  26. 26

    从另一个张量创建特定张量

  27. 27

    用另一个张量索引张量

  28. 28

    根据TensorFlow概率中的另一个随机变量从张量中选择一个法线

  29. 29

    如何将编号从X到Y的行插入到Z行之后的另一个文件中?

热门标签

归档