如果我们将例子5和例子1进行对比,将例子6和例子3对比,我们会发现如果不考虑到scatter的覆盖和聚集的问题,gather可以完美复原scatter的操作,即证明了gather是scatter逆过程,二者的数据流动方向正好相反。 四,总结 我们废了这么大篇幅介绍了scatter/scater_add和gather操作的内容和他们二者的关系,可这对我们介绍图神经网络...
1、gather函数 torch.gather(input,dim,index,out=None) 作用:获取输入tensor中特定维度特定位置的元素 参数: input(tensor) --源张量 dim(int) -- 索引维度 index(Tensor) -- 待获取元素的索引 out -- 输出张量 examples: 官方文档3维张量操作说明: 故可知: out[0][1]对应为input[0]...
到这里gather的用法介绍就结束了,因为gather毕竟是scatter的逆过程,理解了scatter,gather并不需要太多说明。 小结 scatter可以将一个张量映射到另一个张量,其中一个应用是onehot函数. gather和scatter是两个互逆的过程,gather可用于压缩稀疏张量,收集稀疏张量中非0的元素。
接下来遍历本机模型的parameters,并获取grad梯度,发送到master node,并从master node获取平均值后更新gradforpinmodel.parameters():# 将grad值发送到master nodedist.gather(p.grad,group=group, async_op=False)# 接收master node发送过来的grad值dist.scatter(p.grad,group=group, src=0, async_op=False) opti...
一图看懂 gather,scatter.涉及到PyTorch中的数据操作时,torch.gather和torch.scatter_是两个强大而灵活的函数,分别用来处理张量元素的收集和分散。 1. torch.gather 用于从输入张量中收 - TransformerX于20231217发布在抖音,已经收获了7个喜欢,来抖音,记录美好生活!
scatter_是gather 的逆操作 同时pytorch中以‘下划线’结尾的函数不会返回新的变量,而是直接修改该变量 该例子设置dim=1 那么src[0][0] 应该赋给out[0][index[0][0]]=out[0][0] src[1][0] 应该付给out[1][index[1][0]]=out[1][0]
小结 scatter可以将一个张量映射到另一个张量,其中一个应用是onehot函数. gather和scatter是两个互逆的过程,gather可用于压缩稀疏张量,收集稀疏张量中非0的元素。 别再荒废时光了,做不出成果也不能全怪自己的。
二. pytorch中gather和scatter_ gather(聚合操作) (1)函数原型:torch.gather(input, dim, index, out=None); (2)函数功能:对于out指定位置上的值,去寻找input里面对应的索引位置,根据是index; (3)三维数组的通项公式 out[i][j][k] = input[index[i][j][k]][j][k] # if dim = 0 ...
scatter和gather在PyTorch中扮演着关键角色,理解它们有助于深入掌握图神经网络计算框架PyG的原理。scatter函数的主要作用是根据给定的索引和源张量,将源张量的值写入到目标张量中。其核心逻辑是,对于源张量中的每个值,其在目标张量中的输出索引由源张量在维度不等于指定维度的所有位置的索引值以及源张量在...
gather函数用于从张量中提取元素。要使用gather函数,输入与索引必须具有相同的维度。例如,如果输入数据为二维,索引也应为二维,尽管它们的形状可以不同。函数输出与索引相同。以二维张量为例,创建一个索引。索引同样应为二维。当dim设置为0时,gather函数操作相当于在行上进行选择。假设索引值为[0, 2, ...