在指定dim上,从原tensor中获取指定index的数据 看到这个核心定义,我们很容易想到gather()的基本想法就是...
gather(1, action)返回的是形状(batch, 1)的tensor,作用是把tensor1的元素按照tensor2中的索引取出来,也就是取出实际执行的动作的logits。 下面详述gather的功能。 torch.gather(input, dim, index, *, sparse_grad=False, out=None) → Tensor 对于一个三阶张量,输出为 out[i][j][k]=input[index[i][j...
d = a.gather(1, b)# dim=1 c= tensor([ [5, 1, 2, 3, 4], [0, 1, 7, 3, 4], [0, 1, 2, 3, 4]]) d=tensor([ [ 1, 0, 0, 0, 0], [ 5, 5, 6, 5, 5], [10, 10, 10, 10, 10]]) ok, 看到这儿应该有点费劲儿了。 如果dim=0,则b相对于a,它存放的都是第0...
输入行向量index,且dim=1 index=torch.tensor([[2,1,0]])tensor_1=tensor_0.gather(1,index)print(tensor_1)tensor([[5,4,3]]) 维度为1,则替换列索引的值,那么输出为tensor([[ input[i][2] input[i][1] input[i][0] ]]),index每一个元素的索引为(0,0) (0,1) (0,2),i均为1,那么t...
torch.gather()的定义非常简洁: 在指定dim上,从原tensor中获取指定index的数据, 看到这个核心定义,我们很容易想到gather()的基本想法就是从完整数据中按索引取值,比如下面从列表中按索引取值: lst= [1,2,3,4,5]value= lst[2]# value = 3value= lst[2:4]# value = [3, 4] ...
dim: 筛选数据的方式 Gather 函数返回值和 index 相同 Dim=0 Dim=0 dim = 0 input = torch.tensor([[10, 11, 12], [13, 14, 15], [16, 17, 18]]) index = torch.tensor([[0 , 1, 2], [1 , 2, 0]]) output = torch.gather(input, dim, index) ...
这里的index输入的是一个矩阵,gather获得的矩阵形状和index传入的矩阵是一致的。 通过例子来解释说明: 针对dim=0,就是行号变动。 >>> import torch as t >>> a = t.arange(0,16).view(4,4) >>> a tensor([[ 0, 1, 2, 3], [ 4, 5, 6, 7], ...
1. gather函数的基本用法 gather函数的用法如下: torch.gather(input,dim,index,out=None,sparse_grad=False)->Tensor 1. 其中,参数的含义如下: input:输入张量,即需要从中提取元素的张量。 dim:指定提取元素的维度,即在哪个维度上进行索引操作。 index:索引张量,即指定提取元素的索引位置。
>>> out = torch.gather(x, dim = 0, index = index) >>> print(out) tensor([[6, 1, 5]]) gather 函数的输出结果和我们在小例子中分析的结果一致。 如果按照从上到下来看三个红色元素,采集元素的顺序和从前面从左向右看的时候不同,此时采集元素的顺序为 1, 5, 6,现在看看此时这三个红色元素在...
torch.gather(t,1,torchLongTensor([[0,0],[1,0]])) 1,1 4,3 可以看出gather的作用是根据索引返回该项元素,首先先输入一个Tensor 然后根据dim进行判断是是行的还是列的,当dim=0 时候竖行查找,当dim=1的时候是横向查找 上题中,dim=1,那么索引就是列号。index的大小就是输出的大小,比如index是[1,0...