PyTorch scatter_ 从懵懂到清晰

PyTorch scatter_ 从懵懂到清晰

今天看pytorch官方文档,看到一个函数scatter_,好奇了一下去看官方解释,乍一看寥寥几句解释,却把我整懵了,赶紧搜了一下,发现好几篇文章都是写的差不多,也没看懂,后来终于看到这篇文章,才算搞明白了是咋回事 原文链接

重点来了老弟

直接贴图:
假设我们有这样一个tensor
在这里插入图片描述
调用scatter_方法,会得到如下结果:
在这里插入图片描述
(3,5)
表示输出的tensor的维度,初始值都为0;
0 表示按行这一维度填充,暂用dim表示,1表示按列填充;
[[0, 1, 2, 0, 0], [2, 0, 0, 1, 2]] 表示索引,暂用index表示;
x 就是第一个图的输入了。

执行原理是这样的:
可以将xindex一一对应起来,那么函数的意思就是:将与index中每个位置对应的x中的值填充到输出bindex中该位置值对应行中,列保持不变,感觉说不太明白omg。

举个栗子:

  1. index中索引(0,0)的值0对应x中(0,0)的0.0862,那意思就是将0.0862填充到输出的第0行中,列保持不变,即填充到b中的(0,0)位置;
  2. index中索引(0,1)的值1对应x中(0,1)的0.6349,那意思就是将0.6349填充到输出的第1行中,列保持不变,即填充到b中的(1,1)位置;
  3. index中索引(1,3)的值1对应x中(1,3)的0.7461,那意思就是将0.7461填充到输出的第1行中,列保持不变,即填充到b中的(1,3)位置。

这个函数执行原理就是这样了。

如果将dim的值改为1,那么就是保持行不变,根据index中的值填充到对应的列中,同样的x作为输入,dim改为1后的输出为:
在这里插入图片描述
可以在纸上将这个过程写一下会更清晰。

附两个图
在这里插入图片描述

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值