torch_scatter.scatter()的使用方法

7 篇文章 0 订阅
订阅专栏

学习目标:

在学习PyG时,遇到了 scatter 这个函数,经过学习加上自身的理解,记录如下以备复习


学习内容:

在这里插入图片描述

  • src:表示输入的tensor,接下来被处理;
  • index:表示tensor对应的索引;
  • dim:该值取0或者1(-1),默认是1;当dim=0时,表示从进行分割成元素;当dim=1时,表示从进行分割成元素。
  • reduce:表示对应的操作

具体操作如下:

例子1

from torch_scatter import scatter
src = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
index = torch.tensor([0, 0, 1], dtype=torch.int64)
out = scatter(src, index, dim=0, reduce='mean')
print(out)

在这里插入图片描述
1.首先是dim=0表示对输入的tensor进行分割:[1,2,3],[4,5,6],[7,8,9]。
2.索引index=[0,0,1]表示处理的顺序:第一行元素和第二行元素进行处理,再是第三行的元素进行进行。对第一行元素[1,2,3]和第二行元素[4,5,6]进行reduce='mean'得到[2.5,3.5,4.5],对第三行元素[7,8,9]进行reduce='mean'得到[7,8,9].

例子2

from torch_scatter import scatter
src = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) 
index = torch.tensor([0, 0, 1], dtype=torch.int64)
out = scatter(src, index, dim=1, reduce='mean')
print(out)

在这里插入图片描述
1.首先dim=1表示对输入的tensor进行列向分割元素[1,4,7]、[2,5,8]和[3,6,9]。
2.索引index=[0,0,1]表示将[1,4,7]和[2,5,8]首先进行reduce='mean'操作得到[1.5,4.5,7.5];[3,6,9]进行reduce=mean操作后仍为[3,6,9],接着将其进行列向拼接。

例子3–维度问题

from torch_scatter import scatter
src = torch.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]])  
index = torch.tensor([1, 1, 0,2], dtype=torch.int64)
out = scatter(src, index, dim=0, reduce='mean')
print(out)

在这里插入图片描述
1.dim=0表示从行向进行分割
[1,2,3]
[4,5,6]
[7,8,9]
[10,11,12]
2.索引index=[1,1,0,2],从索引可以看出顺序为[7,8,9]——[1,2,3]和[4,5,6]——[10,11,12],分别进行reduce='mean'操作得到[7,8,9]——[2.5,3.5,4.5]——[10,11,12]三个tensor,然后进行行向拼接。


PyG使用scatter对图节点特征进行聚合
CSDN 精品推荐
01-23 427
上述代码我们定义了一个5个节点的特征矩阵,如果我们希望这5个节点根据不同的索引关系进行聚合,那么只需要重新定义索引即可,我们定义了索引为【0,0,0,1,1】,它的池化方式就是将第一个节点、第二个节点、第三个节点进行均值化得到一个维度为【1,21】的向量,然后将第四个节点和第五个节点进行池化,得到另外一个维度为【1,21】的向量。上面代码创建了一个节点特征矩阵维度为【37,21】,代表共有37个节点,每个节点的特征维度为21,如果我们希望将这37个节点进行均值化,可以使用。还有一种用法就是利用。
one hot编码:`torch.Tensor.scatter_()`函数用法详解
01-07
torch.Tensor.scatter_()是torch.gather()函数的方向反向操作。两个函数可以看成一对兄弟函数。gather用来解码one hot,scatter_用来编码one hot。 scatter_(dim, index, src) → Tensor dim (python:int) – 用来寻址的坐标轴 index (LongTensor) – 索引 src(Tensor) –用来scatter的源张量,以防value未被指定。 value(python:float) – 用来scatter的源张量,以防src未被指定。 现在我们来看看具体这么用,看下面这个例子就一目了
python安装torch-cluster、torch-scattertorch-sparse和torch-geometric | torch_geometric详细安装教程
最新发布
sinat_29950703的博客
08-05 1500
python安装torch-cluster、torch-scattertorch-sparse和torch-geometric,常见错误
torch_scatter.scatter详解
热门推荐
StarfishCu的博客
09-28 1万+
scatter方法通过src和index两个张量来获得一个新的张量。 torch_scatter.scatter(src: torch.Tensor, index: torch.Tensor, dim: int = - 1, out: Optional[torch.Tensor] = None, dim_size: Optional[int] = None, reduce: str = 'sum') → torch.Tensor 原理如图,根据index,将index相同值对应的src元素进行对应定义的计
torch_scatter.scatter()的使用方法详解
KI的博客
07-21 3248
torch_scatter.scatter()的使用方法详解
torch_scatter
F_aF_a的博客
08-03 423
官方文档 文章目录`scatter` scatter 用一张官网的图 import torch from torch_scatter import scatter index = torch.tensor([0,0,1,0,2]) input = torch.tensor([[1,1],[1,1],[2,2],[1,1],[1,1]]) result = scatter(input,index,dim=0,reduce="sum") """ tensor([[3, 3], [2, 2],
torch.scatter
芒果干的博客
10-18 6780
本文目录一、函数简介二、二维举例三、详解执行过程1. 第一步2. 第二步3. 第三步4. 问题 一、函数简介 torch.scatter(input, dim, index, src) dim ([int]) – the axis along which to index index (LongTensor) – the indices of elements to scatter, can be either empty or of the same dimensionality as src. Whe
torch_scatter-2.1.2-cp310-cp310-macosx_11_0_x86_64.whl.zip
02-19
本文将详细探讨`torch_scatter`模块,并介绍如何在特定环境下安装和使用。 `torch_scatter`是PyTorch的一个补充库,它提供了与`scatter_add`, `scatter_max`, `scatter_min`, `scatter_mean`等相关操作,这些操作在...
torch_scatter-2.1.0+pt113cpu-cp310-cp310-linux_x86_64.whl.zip
12-20
本文将详细解析torch_scatter库以及如何在特定环境(如标题所示的Python 3.10和CPU环境)下正确安装和使用。 首先,我们来了解一下`torch_scatter`。这个库的核心功能是处理张量的“散射”操作,即将数据分散到目标...
torch_scatter-2.1.0+pt113cpu-cp39-cp39-linux_x86_64.whl.zip
12-20
torch_scatter模块详解及其与torch的协同使用torch_scatter是一个在PyTorch框架下广泛使用的扩展库,主要用于处理图神经网络(GNN)中的散射操作。该库提供了一种有效的方法来对图数据进行加权求和、平均等...
torch_scatter-2.1.2+pt21cpu-cp38-cp38-linux_x86_64.whl.zip
02-19
torch_scatter-2.1.2+pt21cpu-cp38-cp38-linux_x86_64.whl.zip:...正确安装和理解其使用方法对于提升代码效率和模型性能具有重要意义。通过遵循上述步骤和指南,你将能够顺利地将torch_scatter集成到你的项目中。
torch_scatter-2.1.2+pt21cpu-cp39-cp39-linux_x86_64.whl.zip
02-19
output = torch_scatter.scatter_add(src, target, dim=0) print(output) # 输出: tensor([1, 5, 3]) ``` 在实际应用中,你需要根据你的任务和数据结构来调整 `target`、`src` 和 `dim` 参数。 总结,torch_...
torch_scatter.scatter_add、Tensor.scatter_add_ 、Tensor.scatter_、Tensor.scatter_add 、Tensor.scatter
lmb09122508的博客
12-03 3660
torch_scatter.scatter_add 官方文档:torch_scatter.scatter_add(src,index,dim=-1,out=None,dim_size=None,fill_value=0) Sums all values from thesrctensor intooutat the indices specified in theinde...
pytorch函数之scatter()和scatter_()
xinjieyuan的博客
06-10 5393
前言 这两个函数,其实本来有一个大佬写的比较清楚了,但是说实话,总是给忘具体使用细节。我还是自己写一个更清晰的吧。 官方文档 scatter_() scatter_(input, dim, index, src) → Tensor 其实这样写会造成迷惑,建议这么按下面的理解: 理解 input.scatter_(dim, index, src) → Tensor input: 我们需要插入数据的起源tensor;也就是想要改变内部数据的tensor dim:我们想要从哪个维度去改input数据 ind
Torch API】关于pytorch中tensor.scatter_,torch.scattertorch_scatter.scatter函数的分析、理解与实现
devil_son1234的博客
06-16 965
scatter摘要
pytorchscatter函数的用法
qq_38100666的博客
11-04 442
当在PyTorch中需要根据指定的索引来将值分散(scatter)到张量的特定位置时,可以使用scatter函数。
torch.scatter_
Mao_Jonah的博客
11-02 1656
torch.scatter_ Tensor.scatter_(dim, index, src, reduce=None) → Tensor Parameters dim (int) – the axis along which to index index (LongTensor) – the indices of elements to scatter, can be either empty or of the same dimensionality as src. When empty, the
Pytorch框架之torch.scatter_
发呆的比目鱼的博客
09-25 481
Pytorch框架之torch.scatter_
【函数小trick】torchscatter()、scatter_()详解(多标签one-hot向量生成)
诸葛灬孔暗
07-05 1368
1. 背景 可以先看torch官方文档介绍: 主要作用是根据索引值index,向tensor中指定dim维度的index位置写入scr所对应的数值,可以用来生成one-hot向量和特定mask,熟练使用该函数,就不用暴力for循环啦。 2. 函数应用 (1)one-hot向量生成 将图像的标签值转换为一组只有0和1组成的向量,这是DL领域常用到的。 import torch targets=torch.zeros(3,5) index = torch.LongTensor([[3],[2]
torch_scatter.scatter_max函数理解
05-16
`torch_scatter.scatter_max`函数是PyTorch中的一种scatter函数,用于将输入的Tensor按照指定的维度进行散射操作,并返回指定维度上的元素最大值和对应的索引位置。 该函数的输入包括三个参数:输入Tensor(即要进行散射操作的Tensor)、散射维度dim和索引Tensor(即指定维度上的索引位置)。输出包括两个Tensor:散射后的Tensor和对应的最大值和索引位置。 具体来说,`torch_scatter.scatter_max`函数的操作流程如下: 1. 根据索引Tensor将输入Tensor按照指定维度进行散射操作,得到一个散射后的Tensor。 2. 在指定维度上找到散射后的Tensor中的最大值和对应的索引位置。 3. 返回散射后的Tensor和最大值和索引位置对应的两个Tensor。 值得注意的是,如果输入Tensor中某些元素在指定维度上对应的索引位置相同,那么在散射操作时,这些元素的最大值和索引位置会被更新为最后一个被处理到的元素的最大值和索引位置。 下面是一个简单的示例代码,演示了如何使用`torch_scatter.scatter_max`函数: ```python import torch from torch_scatter import scatter_max # 定义一个输入Tensor x = torch.tensor([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6], [0.7, 0.8, 0.9]]) # 定义一个索引Tensor index = torch.tensor([0, 1, 0]) # 在第一维上进行散射操作,得到散射后的Tensor和最大值和索引位置对应的两个Tensor out, argmax = scatter_max(x, index, dim=0) # 输出结果 print(out) # tensor([[0.7000, 0.8000, 0.9000], [0.4000, 0.5000, 0.6000]]) print(argmax) # tensor([2, 1]) ``` 在上面的示例代码中,我们首先定义了一个3x3的输入Tensor `x`,然后定义了一个长度为3的索引Tensor `index`,表示在第一维上,第一个元素要被散射到第0个位置,第二个元素要被散射到第1个位置,第三个元素要被散射到第0个位置。 之后我们调用`torch_scatter.scatter_max`函数,在第一维上进行散射操作,得到了散射后的Tensor `out`和最大值和索引位置对应的两个Tensor `argmax`。最后我们输出了这两个Tensor的值,可以看到在第一维上,第一个位置对应的最大值为0.7,索引为2,第二个位置对应的最大值为0.5,索引为1。
写文章

热门文章

  • 在jupyter notebook中配置GPU 21307
  • Python的基本绘图<三> 3792
  • python编程<六> 3460
  • 1.C++简介 2617
  • 二、使用预训练模型对图片进行目标检测 2541

分类专栏

  • 问题简记 7篇
  • 计算机导论学习记录
  • C++学习记录 28篇
  • 目标检测 2篇
  • 蓝桥杯之python编程 17篇

最新评论

  • 在jupyter notebook中配置GPU

    KevinLi945: 你的“conda activate tensorflow”是指你启用了一个名叫tensorflow的环境,名字容易误导别人而且你自己在4都说错了

  • 在jupyter notebook中配置GPU

    寻找buff的小白兔: 为啥显示:ModuleNotFoundError: No module named 'tensorflow' ?????????

  • 在jupyter notebook中配置GPU

    yufy001: 全都叫tensorflow……环境、内核分不清……弄不成

  • torch_scatter.scatter()的使用方法

    CSDN-Ada助手: 非常感谢您分享torch_scatter.scatter()的使用方法,这对于深度学习爱好者来说非常有用。我们期待您写更多类似的技术博客,并且建议您可以尝试写一篇介绍PyTorch的分布式训练的博文,分享一下您的经验和技巧,这对于需要进行大规模训练的用户来说会非常有价值。期待您的下一篇博客! 2023年博客之星「城市赛道」年中评选已开启(https://activity.csdn.net/creatActivity?id=10470&utm_source=blog_comment_city ), 博主的原力值在所在城市已经名列前茅,持续创作就有机会成为所在城市的 TOP1 博主(https://bbs.csdn.net/forums/blogstar2023?typeId=3152981&utm_source=blog_comment_city),更有丰厚奖品等你来拿~。

  • 在jupyter notebook中配置GPU

    菜鸟要爱学习: 那就重新试一下呗

大家在看

  • javaWeb项目-ssm+vue共享单车管理系统功能说明介绍 472
  • c语言养成第一天 笔记
  • 绞杀者模式:逐步迁移与替代遗留系统的策略解析 699
  • JavaScript 变量作用域和提升机制解析
  • 光流估计概念及算法

最新文章

  • PyG的Planetoid无法直接下载Cora等数据集的解决方法
  • tf.where、
  • 28.C++之STL(六)
2023年3篇
2022年53篇
2021年4篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

玻璃钢生产厂家安庆环保玻璃钢雕塑多少钱广东玻璃钢海豚雕塑价格临沂园林玻璃钢雕塑肇庆市玻璃钢卡通雕塑定兴玻璃钢花盆花器吉安人物玻璃钢雕塑价位大型商场美陈价钱杭州玻璃钢雕塑厂优质商家哈密商场美陈河北商场创意商业美陈道具红色玻璃钢雕塑生产上海特色商场美陈生产公司七台河校园玻璃钢雕塑生产厂家台湾玻璃钢商场美陈雕塑广东卡通玻璃钢动物鹤雕塑透明玻璃钢树脂雕塑深圳玻璃钢动物雕塑哪家好深圳泡沫玻璃钢雕塑加工厂信阳铜校园玻璃钢景观雕塑遂平玻璃钢雕塑大型玻璃钢雕塑质量哪家好南昌户外玻璃钢雕塑价位宁波玻璃钢雕塑性价比高抽象玻璃钢雕塑价格孝感市玻璃钢雕塑抽象牛玻璃钢雕塑济宁卡通玻璃钢雕塑制作玻璃钢人物雕塑采购浙江常见商场美陈采购津玻璃钢雕塑厂家香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化