如果我们将例子5和例子1进行对比,将例子6和例子3对比,我们会发现如果不考虑到scatter的覆盖和聚集的问题,gather可以完美复原scatter的操作,即证明了gather是scatter逆过程,二者的数据流动方向正好相反。 四,总结 我们废了这么大篇幅介绍了scatter/scater_add和gather操作的内容和他们二者的关系,可这对我们介绍图神经网络...
一图看懂 gather,scatter.涉及到PyTorch中的数据操作时,torch.gather和torch.scatter_是两个强大而灵活的函数,分别用来处理张量元素的收集和分散。 1. torch.gather 用于从输入张量中收 - TransformerX于20231217发布在抖音,已经收获了7个喜欢,来抖音,记录美好生活!
到这里scatter就结束了。 gather的用法 gather是scatter的逆过程,从一个张量收集数据,到另一个张量,看一个例子有个直观感受。 x = torch.tensor([[1,2],[3,4]]) torch.gather(input=x,dim=1,index=torch.tensor([[0,0],[1,0]])) 1. 2. tensor([[1, 1], [4, 3]]) 1. 2. 可以猜测到收...
故可知: out[0][1]对应为input[0][index[0][1]],即为input[0][0],所以该位置值为1。其他位置类似。 2、scatter_函数 scatter_(input,dim,index,src) 作用:将src中的元素根据index中的索引取出并在指定维度上填进input 参数: input(tensor) --被填充张量 dim(int) -- 索引维度 index(Te...
多节点训练VGG11模型:使用scatter和gather 接下来就进入正题,如何用不同的方法多节点训练模型。具体而言,我们将分别用多种方法,分布式计算和更新梯度。 首先,因为单机上batch_size=256,而我们现在有4个节点,也就是四台机器,所以我们设置每台机子上的batch_size=256/4=64,这样每一个epoch仍然等价于batch_size=256...
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的元素。 别再荒废时光了,做不出成果也不能全怪自己的。
scatter和gather在PyTorch中扮演着关键角色,理解它们有助于深入掌握图神经网络计算框架PyG的原理。scatter函数的主要作用是根据给定的索引和源张量,将源张量的值写入到目标张量中。其核心逻辑是,对于源张量中的每个值,其在目标张量中的输出索引由源张量在维度不等于指定维度的所有位置的索引值以及源张量在...
二. 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: 将输入数据若干等分,这里划分成了两份,会返回一个tuple。因为batch size=16,所以刚好可以划分成8和8,那如果是15怎么办呢?没关系,它会自动划分成8和7,这个你自己可以做实验感受一下。 parallel_apply: 现在模型和数据都有了,所以当然就是并行化的计算咯,最后返回的是一个list,每个元素是对应GPU的计算...