以A = B.gather(dim=0, index=torch.tensor([[2, 1, 2]]))为例,首先确定A的维度与index维度一致(index维度可以是任意的维度,不要受限于B),即A的维度为(1,3);其次dim=0代表按列索引,那么index第一个元素“2”的含义为在B中其所在列(即第0列)的第2个元素。同理,index第二个元素“1”的含义为在...
注意,permute里的参数对应的是张量a的维度索引。所以,permute的输入参数的维度必须与a一致,并且只能是0,1,2...,dim这种数值,这样才能一一对应地索引到a里面的维度。 a.permute(1,2,0)的意思是,把a的第一个维度放到最后面。 结论 对于同一个tensor,它的元素总数是固定的,permute的作用是把m×n×c,改成n×...
步骤3: 使用gather函数获取对应的元素 最后,我们可以使用gather函数来根据索引从输入tensor中获取对应的元素。代码如下: output_tensor=torch.gather(input_tensor,dim=0,index=index_tensor) 1. 在上面的代码中,我们通过指定dim参数为0来表示我们希望在第一个维度上进行gather操作。index参数指定了我们要使用的索引tens...
pytorch ssd里面gather的用法 # Compute max conf across batch for hard negative mining#conf_data [3,8732,21] batch_conf[3*8732,21] [26196,21]batch_conf= conf_data.view(-1, self.num_classes)#batch_conf [26196,21]b1= log_sum_exp(batch_conf)#[26196,1]b00= conf_t.view(-1,1)#[26...
Pytorch的gather用法理解 先放一张表,可以看成是二维数组 看一下下面例子代码: 针对0维(输出为行形式) >>>importtorchast>>>a = t.arange(0,16).view(4,4)>>>a tensor([[0,1,2,3], [4,5,6,7], [8,9,10,11], [12,13,14,15]])#选取对角线的元素>>>index = t.LongTensor([[0,1,...
(next_token_logits, top_k)top_k_probs=F.softmax(top_k_logits/temperature,dim=-1)next_token_index=torch.multinomial(top_k_probs,num_samples=1)next_token=top_k_indices.gather(-1, next_token_index)input_ids=torch.cat([input_ids, next_token],dim=-1)generated_text=tokenizer.decode(...
(next_token_logits,top_k)top_k_probs=F.softmax(top_k_logits/temperature,dim=-1)next_token_index=torch.multinomial(top_k_probs,num_samples=1)next_token=top_k_indices.gather(-1,next_token_index)input_ids=torch.cat([input_ids,next_token],dim=-1)generated_text=tokenizer.decode(input_...
input[0][0]=1input[0][1]=2input[1][0]=3input[1][1]=4index[0][0]=0index[0][1]=0index[1][0]=1index[1][1]=0 dim=0: out = torch.gather(input,0, torch.tensor([[0,0], [1,0]]))print(out) out[0][0]=input[index[0][0]][0]=input[0][0]=1out[0][1]=input...
函数torch.gather(input, dim, index, out=None) → Tensor 沿给定轴 dim ,将输入索引张量 index 指定位置的值进行聚合. 对一个 3 维张量,输出可以定义为: out[i][j][k]=input[index[i][j][k]][j][k]# if dim == 0out[i][j][k]=input[i][index[i][j][k]][k]# if dim == 1out...
torch.gather(input, dim, index, out=None):在指定维度上按照索引从input中进行选择最后,输出tensor。注意:index的维度必须小于等于input的维度。 官网解释非常,下面根据自己的理解进行图解,简单具体操作如下: import torch input = torch.tensor([[10, 11, 12], [13, 14, 15], [16, 17, 18]]) index ...